四、SpringCloud Bus自动刷新配置
Spring Cloud Bus集成了市面上常见的RabbitMQ和Kafka等消息代理。
其会连接微服务系统中所有拥有Bus总线机制的节点,当有数据变更的时候,会通过消息中间件使用消息广播的方式通知所有的微服务节点同步更新数据。(如:微服务配置更新等)
基于client端实现全局刷新
基于server和client端实现全局刷新 将热刷新逻辑和具体的服务应用解耦
1、需要先安装rabbitmq
a、docker pull rabbitmq:management
b、docker run -d --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:management
c、默认账号:guest/guest
2、基于端点刷新的项目 添加依赖
3、在bootstrap中增加RabbitMQ的配置:
4、读取配置
5、端口配置
6、启动 config-bus-client测试,打开,修改version=dev-4.0.0为version=dev-5.0.0,并发送刷新请求http://localhost:9002/bus/refresh,刷新测试页面查看:
7、通过gitee或git的weblook 主动推送配置变动信息
局部刷新服务
使用Bus总线也可以实现部分服务热刷新。
前文讲到的两种刷新实现方式都是全局热刷新,所有带有Bus消息总线组件且与同一个RabbitMQ连接的微服务应用都会执行热刷新逻辑。
有些时候,热刷新只需要在一个微服务应用或一个微服务应用集群中执行,这个时候就需要使用局部刷新功能。
局部热刷新的实现过程和全局热刷新一致,只是请求地址/bus/refresh需要提供一个GET请求参数,请求参数命名为destination,参数值是要刷新的微服务名称:端口[**]。
如:微服务名:config-client 微服务端口:10802、10803、10804
如果只热刷新微服务config-client:10802时,请求的路径为/bus/refresh?destination=config-client:10802。
如果需要刷新config-client微服务集群,则请求路径为/bus/refresh?destination=config-client:**
五、参考资料
源码地址:
https://gitee.com/pingfanrenbiji/springcloud-example.git
参考网址: