- 一.SpringCloudBus简介
- 二. SpringCloudBus 代码的实现
- 2.1 配置服务端
- 2.2 配置客户端
如果我们更新码云中的配置文件,那客户端工程是否可以及时接受新的配置信息 呢?我们现在来做有一个测试,修改一下码云中的配置文件中mysql的地址 ,然后测试 http://localhost:9001/label (查询所有标签的接口)数据是否依然可以查询出来,证明修改服务器中的配置并没有更新立刻到工程,只有重新启动程序才会读取配置。
那我们如果想在不重启微服务的情况下更新配置如何来实现呢? 我们使用SpringCloudBus来实现配置的自动更新.
其主要的流程如下图, 如果修改了git服务器上的配置文件, 那么就手动向mq发送一个消息,发送信息的方式为发送该post请求http://127.0.0.1:12000/actuator/bus-refresh
,其中的ip和端口为config配置中心的ip与端口. 那么业务的微服务就监听到了配置文件的改动, 就去重新编译代码即可.
修改tensquare_config工程的pom.xml,引用依赖
org.springframework.cloud
spring-cloud-bus
org.springframework.cloud
spring-cloud-stream-binder-rabbit
修改tensquare_config工程的application.yml ,添加配置
spring:
rabbitmq:
host: 192.168.184.135
management: #暴露触发消息总线的地址
endpoints:
web:
exposure:
include: bus-refresh #使用bus必须要加的bus
2.2 配置客户端
以基础模块为例,加入消息总线. 修改tensquare_base工程 ,引入依赖
org.springframework.cloud
spring-cloud-bus
org.springframework.cloud
spring-cloud-stream-binder-rabbit
org.springframework.boot
spring-boot-starter-actuator
在码云的配置文件中配置rabbitMQ的地址
rabbitmq:
host: 192.168.184.135
启动依次tensquare_config,tensquare_eureka 、和tensquare_base 发送如下的get请求.查询所有的标签 http://localhost:9001/label
查询的结果如下: 接着在码云的base-dev.yml上,修改该配置文件,把mysql的数据库地址改为127.0.0.1 如下图所示
在本地mysql上, 创建一个tensquare_base数据库,在tb_label表中插入一条数据,标签名为 本地.
在postman中发送一个如下的post请求,手动向mq发送消息,说明配置文件改动了
http://127.0.0.1:12000/actuator/bus-refresh
该请求响应数据为空. 得到响应后,再次发送查询所有标签的请求. http://localhost:9001/label
,得到的响应数据如下图,代表成功监听到了配置文件的改动, 说明不需要重启服务器,就能更新配置文件! 这将极大的简便运维的操作.