我们可以使用springCloudBus来实现配置的自动更新(不重启微服务的情况系,自动更新配置)
一 配置服务端
1.修改myproject_config工程的pom.xml,引用依赖
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring‐cloud‐bus</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring‐cloud‐stream‐binder‐rabbit</artifactId> </dependency>
2.修改application.yml ,添加配置
rabbitmq: host: 192.168.177.155 management: #暴露触发消息总线的地址 endpoints: web: exposure: include: bus‐refresh
二 配置客户端
以myproject_base模块为例,加入消息总线
1. 修改myproject_base工程 ,引入依赖
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-bus</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-stream-binder-rabbit</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency>
2.在码云的配置文件中配置rabbitMQ的地址:
rabbitmq: host: 192.168.177.155
3.启动myproject_eureka 、myproject_config和myproject_base 看是否正常运行
4.修改码云上的配置文件 ,将数据库连接IP 改为127.0.0.1 ,在本地部署一份数据
库。
5.postman测试 Url: http://127.0.0.1:12000/actuator/bus-refresh Method:post
6.再次观察输出的数据是否是读取了本地的mysql数据。
三 自定义配置的读取
1.修改码云上的配置文件,增加自定义配置
sms: ip: 127.0.0.1
2.在myproject_base工程中新建controller
@RefreshScope @RestController public class TestController { @Value("${sms.ip}") private String ip; @RequestMapping(value = "/ip", method = RequestMethod.GET) public String ip() { return ip; } }
3.运行测试看是否能够读取配置信息 ,OK.
4.修改码云上的配置文件中的自定义配置
sms: ip: 192.168.177.164
5.通过postman测试 Url: http://127.0.0.1:12000/actuator/bus-refresh Method:post
测试后观察,信息更新成功。
注意事项:@RefreshScope 此注解用于刷新配置,如果controller中没有此注解,信息不会更新