原理:首先 config-server 会去远端git 拉取内容,并在本地保存一份,同时提供对外的配置服务,而config-client(如 order) 在启动的时候访问config-server读取配置,启动后,你再次修改配置,config-client(如 order服务)的配置是不会自动改变的,因为config-client 并没有接收到自己的配置被修改的通知。我们可以通过消息队列(RabbitMQ)来传递信息,而spring cloud bus 就是用来 操作消息队列RabbitMQ;当config-server 使用了spring cloud bus后,会对外提供一个http接口(/bus-refresh),通过访问该接口config-server将会把更新配置的信息发送到消息队列中,从而实现自动更新
前提:1;已写好Eureka server与配置中心Config和Config client,2.安装RabbitMQ
首先在config-server中引入组件 ‘spring-cloud-starter-bus-amqp’和‘spring-cloud-config-monitor’
confing-server -------application.yml
启动你的eureka 与config-server后,spring cloud bus 会自动创建一个队列;
然后同样我们在config-server 中引入组件 ‘spring-cloud-starter-bus-amqp’,我这里的config-server是我的oreder;
config-client-----------------yml,重点:
bus:
id: ${spring.application.name}:${spring.cloud.config.profile}:${random.value}
gitee:
http://域名/monitor;
可以使用natapp.cn,具体可以百度一下:网址 https://natapp.cn/ 使用时注意端口配置必须跟config-server的启动端口 保持一致
最后来测试吧~
在config-client中写个Controller 注意:要记得加上 @RefreshScope
然后就可以测试了;
如果不成功;可以查看日志,在配置文件中配置logging
logging:
level:
org.springframework.cloud.bus: debug
对比一下日志
好啦,就这样吧,散会!