1、概述
1⃣️功能:分布式自动刷新配置功能,Spring Cloud Bus 配合 Spring Cloud Config 使用可以实现配置的动态刷新。
2⃣️Bus支持两种消息代理:RabbitMQ 和 Kafka。
3⃣️设计思想
- 利用消息总线触发一个客户端/bus/refresh,而刷新所有客户端的配置🌟
- 利用消息总线触发一个服务端ConfigServer的/bus/refresh端点,而刷新所有客户端的配置
2、RabbitMQ环境配置
3、Config客户端配置
Springcloud Config_妖孽学长的博客-CSDN博客
4、添加消息总线支持
4.1 配置中心服务端
1⃣️Pom
<!--添加消息总线RabbitMQ支持-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bus-amqp</artifactId>
</dependency>
2⃣️yml
#rabbitmq相关配置
rabbitmq:
host: localhost
port: 5672
username: guest
password: guest
4.2 客户端
1⃣️Pom,如上
2⃣️yml:与config对齐
#rabbitmq相关配置 15672是Web管理界面的端口;5672是MQ访问的端口
rabbitmq:
host: localhost
port: 5672
username: guest
password: guest
5、测试
5.1 广播通知
1⃣️启动服务端和客户端
2⃣️访问http://config-3344.com:3344/config-dev.yml、http://localhost:3355/configInfo、http://localhost:3366/configInfo
3⃣️修改Github上配置文件增加版本号,刷新3344即可生效
4⃣️发送curl -X POST "http://localhost:3344/actuator/bus-refresh" 全部生效
5.2 定点通知
1⃣️通知公式curl -X POST "http://localhost:配置中心的端口号/actuator/bus-refresh/{destination}"。
/bus/refresh请求不再发送到具体的服务实例上,而是发给config server并通过destination参数类指定需要更新配置的服务或实例。
destination:spring: application: name: config-client
2⃣️案例:只通知3355,不通知3366
curl -X POST "http://localhost:3344/actuator/bus-refresh/config-client:3355"