一、先上盗图
这张图是让微服务clientA 充当了消息的发布者,据说是违背了单例职责原则。
下面这张图是改进版,由配置中心微服务来担当消息的发布者
二、工作流程
以上两张图对于理解自动刷新的工作流程很关键
1.在gitee配置文件仓库修改对应微服务(e.g. ServiceA)的配置文件并提交
2.手动触发自动刷新,使用Postman发送post请求到配置中心微服务例如http://localhost:9000/actuator/busrefresh
3.添加了sprint-boot-starter-actuator依赖的配置中心微服务在接收到Postman发送的请求后,将消息发送给spring cloud bus
4.spring cloud bus 将消息传递给消息代理 rabbitmq-server,加入消息队列
5. rabbitmq的消费端即微服务(ServiceA)监听到消息后消费了消息,主动发送了刷新配置文件的请求到配置中心微服务
6. 该配置文件对应的微服务(ServiceA)实现了自动刷新配置而无须重启微服务