SpringCloudBus
Posted penghuake
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringCloudBus相关的知识,希望对你有一定的参考价值。
1.1 SpringCloudBus简介
? 如果我们更新码云中的配置文件,那客户端工程是否可以及时接受新的配置信息呢?我们现在来做有一个测试,修改一下码云中的配置文件中mysql的端口 ,然后测试http://localhost:9001/label 数据依然可以查询出来,证明修改服务器中的配置并没有更新立刻到工程,只有重新启动程序才会读取配置。 那我们如果想在不重启微服务的情况下更新配置如何来实现呢? 我们使用SpringCloudBus来实现配置的自动更新。
1.2 代码实现
1.2.1 配置服务端
(1)修改tensquare_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
1.2.2 配置客户端
我们还是以基础模块为例,加入消息总线
(1)修改tensquare_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
(2)启动tensquare_eureka 、tensquare_config和tensquare_base 看是否正常运行
(3)修改码云上的配置文件 ,将数据库连接IP 改为127.0.0.1 ,在本地部署一份数据库。
(4)postman测试 Url: http://127.0.0.1:12000/actuator/bus-refresh Method: post
(5)再次观察输出的数据是否是读取了本地的mysql数据。
1.2.3 自定义配置的读取
(1)修改码云上的配置文件,增加自定义配置
sms:
ip: 127.0.0.1
(2)在tensquare_base工程中新建controller
?
(3)运行测试看是否能够读取配置信息 ,OK.
(4)修改码云上的配置文件中的自定义配置
sms:
ip: 192.168.184.134
(5)通过postman测试 Url: http://127.0.0.1:12000/actuator/bus-refresh Method: post
测试后观察,发现并没有更新信息。
这是因为我们的 controller少了一个注解@RefreshScope 此注解用于刷新配置
添加后再次进行测试。
以上是关于SpringCloudBus的主要内容,如果未能解决你的问题,请参考以下文章