SpringCloudBus簡介
Spring Cloud Bus 將分佈式的節點用輕量的消息代理連接起來。它可以用於廣播配置文件的更改或者服務之間的通訊,也可以用於監控。本文要講述的是用Spring Cloud Bus實現通知微服務架構的配置文件的更改。
簡單的說就是你改動了Git上的配置文件,不需要重啓微服務就能自動更新配置。
還是我上一篇博客寫的微服務架構的工程來改動:hello-spring-cloud
1、配置服務端
(1)修改hello-spring-cloud-config
工程 ,引入依賴
<!--SpringCloud Bus所需要的依賴begin-->
<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>
<!--end-->
(2)修改application.yml
,添加配置
# Spring Cloud Bus 配置begin
rabbitmq:
host: 192.168.88.136
management:
endpoint:
web:
exposure:
include: bus‐refresh
# end
2、配置客戶端
以hello-spring-cloud-web-admin-feign
模塊爲例,加入消息總線
(1)修改hello-spring-cloud-web-admin-feign
工程 ,引入依賴
<!--SpringCloud Bus所需要的依賴begin-->
<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>
<!--end-->
(2)在碼雲的配置文件中配置RabbitMQ
的地址:
rabbitmq:
host: 192.168.88.136
(3)啓動hello-spring-cloud-eureka
、hello-spring-cloud-config
和hello-spring-cloud-web-admin-feign
看是否正常運行
(4)修改碼雲上的配置文件 ,將數據庫連接IP 改爲127.0.0.1 ,在本地部署一份數據
庫。
(5)postman測試 url: http://localhost:8888/actuator/bus-refresh
Method:
post (此處的作用是自動刷新碼雲的配置)出現如下圖所示:
(6)再次觀察輸出的數據是否是讀取了本地的mysql數據。
3、自定義配置的讀取
如果需要讀取yml配置中的自定義屬性則需要在controller層上加一個註解:@RefreshScope
添加後再次進行測試。