从springboot到springcloud第十一篇----springcloud bus

使用springcloud config作为配置管理的时候,修改配置的之后还需要重启服务。

这种方式在多服务多集群的情况下显然不太合适,所以需要springcloud bus进行刷新配置。

原理就是向其他服务发送刷新命令,这样就需要用到消息广播中间件。主要有rabbitmq、kafka等,这里以rabbitmq为例。

 

一、安装rabbitMQ

以window版为例:

rabbitmq-server:

https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.8.5/rabbitmq-server-3.8.5.exe

安装rabbitmq需要先安装 Erlang:

http://erlang.org/download/otp_win64_22.3.exe

其他版本请自行去官网下载:

https://www.rabbitmq.com/download.html

https://www.erlang.org/downloads/

安装方式:下一步下一步即可

启动rabbitmq:

进入安装地址:C:\Program Files\RabbitMQ Server\rabbitmq_server-3.8.5\sbin>

输入命令:rabbitmq-plugins enable rabbitmq_management

其他使用详情可以看这篇文章:https://www.cnblogs.com/z-1026/p/9985389.html

 

二、修改config-server服务

2.1 在eureka-client服务的pom文件中添加jar依赖

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bus-amqp</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>

2.2 添加相关配置

#rabbit相关配置
spring.rabbitmq.host=localhost
spring.rabbitmq.port=5672
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest

#打开bus端点
spring.cloud.bus.enabled=true
#对外暴露端点
management.endpoints.web.exposure.include=health,info,bus-refresh
#打开bus跟踪
spring.cloud.bus.trace.enabled=true

2.3 在controller中添加注解 @RefreshScope

package com.example.eurekaclient.contorller;

import com.example.eurekaclient.service.IndexService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RefreshScope
public class IndexController {

    @Autowired
    private IndexService indexService;

    @Value("${message}")
    private String message;

    @GetMapping("/index")
    public String index(){
        return indexService.getMesasge();
    }

    @RequestMapping("/message")
    public String message(){
        return message;
    }
}

 

三、启动eureka-server、config-server、eureka-client(8762、8763)服务

3.1修改配置前

3.2修改配置并提交到git上,手动刷新一次

curl -X POST http://localhost:8763/actuator/bus-refresh

 

源码地址:https://github.com/houfanGitHub/springcloud.git

 

 

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页