手把手教你使用Spring Cloud Bus来动态刷新配置
项目使用SpringCloud版本 :Greenwich.SR2
SpringBoot版本 : 2.1.7.RELEASE
一、Config_Server配置
1、config_server依赖
2、在启动类上添加@EnableConfigServer
3、application.yml文件配置如下
spring:
application:
name: config
cloud:
config:
server:
git:
uri: https://gitee.com/wjjdemayun/config-repo #码云的地址
username: *****
password: *****
#将git上配置文件放到本地的位置的URL
#basedir: /Users/wangjunjie/document/ideaWork/Springcloud实践/yml
#spring cloud bus 刷新配置
bus:
enabled: true
trace:
enabled: true
rabbitmq:
host: 10.211.55.4
port: 5672
password: guest
username: guest
server:
port: 8765
eureka:
client:
service-url:
defaultZone: http://localhost:8700/eureka/
instance:
#每间隔 2s,向服务端发送一次心跳,证明自己依然"存活"
lease-renewal-interval-in-seconds: 2
#告诉服务端,如果我 10s 之内没有给你发心跳,就代表我故障了,将我踢出掉
lease-expiration-duration-in-seconds: 10
#暴露配置中心的自动刷新配置服务接口
management:
endpoints:
web:
exposure:
include: “*”
二、Config_Client客户端配置
1、依赖
2、bootstrap.yml的配置
3、利用内网穿透工具natapp作端口映射
4、在config_client中创建类,来查看配置是否刷新。
要注意@RefreScope注解,他注解的类配置才会刷新
。
5、配置刷新分为手动刷新和自动刷新。
5.1 手动刷新
修改码云中配置问件的信息,将env改为test
5.2、访问配置中心,查看是否修改。
发现已经修改成功。
5.3、查看客户端是否修改成功
然而,客户端没有成功返回的是0,不是test。
5.4.我们手动想config_server发送刷新配置请求
看到rabbitmq的消息发生变化
5.5、此时我们再来查看客户端是否修改成功
刷新成功。到这里手动刷新配置完毕。但是毕竟手动不如自动好。
6、自动刷新,利用码云的webhook来实现。
6.1、在码云上配置webhook
前面的地址为natapp的工具产生的外网地址,后面的固定不变为monitor?path=*
6.2、以后我们改了gi t中的配置,就会触发gi t发送刷新请求,此时我们将env改为dev1
6.3、此时我们再来查看客户端是否修改成功
至此大功告成。有时候如果没有刷新成功的话,可能是内网穿透的地址失效了,需要重新启动获取新的地址。