配置中心配置改变,客户端服务如何能取到最新配置呢?
方案一、refresh
spring-boot-starter-actuator
包,spring-boot-starter-actuator
是一套监控的功能,可以监控程序在运行时状态,其中就包括/refresh
的功能
clent项目
spring-cloud-consumer
1、添加依赖
<!-- 监控,提供配置文件refresh -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
2、配置application.properties
#用于配置文件rfresh 刷新时,关闭安全验证
management.security.enabled=false
3、启动spring-cloud-consumer项目后,修改配置文件
4、post方法访问http://localhost:9001/refresh
5、访问http://localhost:9001/hello
发现客户端实时获取到最新的配置信息
方案二、使用消息总线
当配置文件修改,发送广播,订阅此服务的微服务集体更新配置
server端
1、添加依赖
<!-- 消息总线支持的amqp -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bus-amqp</artifactId>
</dependency>
2、添加配置
注意:消息订阅广播使用的是rabbitmq,需要安装rabbimq服务端
具体安装:https://blog.csdn.net/qq_42683700/article/details/81064622
#用于配置文件rfresh 刷新时,关闭安全验证
management.security.enabled=false
## 开启消息跟踪
spring.cloud.bus.trace.enabled=true
## 消息总线所使用的rabbitmq配置
spring.rabbitmq.host=localhost
spring.rabbitmq.port=5672
spring.rabbitmq.username=xxx
spring.rabbitmq.password=xxx
client端
1、添加依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bus-amqp</artifactId>
</dependency>
2、添加配置
#用于配置文件rfresh 刷新时,关闭安全验证
management.security.enabled=false
## 开启消息跟踪
spring.cloud.bus.trace.enabled=true
## 消息总线所使用的rabbitmq配置
spring.rabbitmq.host=localhost
spring.rabbitmq.port=5672
spring.rabbitmq.username=xxx
spring.rabbitmq.password=xxx
测试
1、依次启动注册中心服务,配置中心服务,客户端9001,客户端9002
2、访问http://localhost:9002/hello
3、修改配置文件后,执行post http://localhost:8001/bus/refresh,或者http://localhost:9001/bus/refresh
4、访问http://localhost:9002/hello,因此客户端接收到广播,更改本地配置