一、概述
SpringCloud Bus 配合SpringCloud Config使用可以实现配置的动态刷新。支持两种消息代理:RabbitMQ 和Kafka 。它整合了 Java 的事件处理机制和消息中间件的功能,能管理和传播分布式系统间的消息,就像一个分布式执行器,可用于广播状态更改、事件推送等,也可以当做微服务间的通信通道。官方文档地址: https://cloud.spring.io/spring-cloud-static/spring-cloud-bus/2.2.1.RELEASE/reference/html/ 。
二、动态刷新全局广播
1、安装好RabbitMQ的环境;
2、在配置中心服务端和客户端加上以下依赖;
<!--添加消息总线RabbitMQ支持-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bus-amqp</artifactId>
</dependency>
3、在配置中心的配置文件中加上以下配置;
spring:
#rabbitmq配置
rabbitmq:
host: localhost
port: 5672
username: guest
password: guest
#暴露bus刷新配置的端点
management:
endpoints:
web:
exposure:
include: 'bus-refresh'
4、在客户端加上以下配置;
spring:
#rabbitmq配置
rabbitmq:
host: localhost
port: 5672
username: guest
password: guest
5、修改远程仓库的配置文件后,发送以下命令刷新配置中心服务端,客户端便可以同步的获取到最新的配置信息。
curl -X POST "http://localhost:3344/actuator/bus-refresh"
三、动态刷新定点通知
定点通知只需要在发送刷新命令的时候加上需要更新的实例,如下:
curl -X POST "http://localhost:配置中心端口号/actuator/bus-refresh/微服务名称:端口号"