使用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依赖
org.springframework.cloud
spring-cloud-starter-bus-amqp
org.springframework.boot
spring-boot-starter-actuator
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