前言
SpringCloud Bus使用輕量級消息代理將分布式系統的節點連接起來。然后可以使用此代理廣播狀態更改(例如配置更改)或其他管理指令。本文結合RabbitMQ+GitHub的Webhook實現上篇博客Config配置中心(SpringCloud系列——Config 配置中心)的自動刷新
官方文檔:https://cloud.spring.io/spring-cloud-static/spring-cloud-bus/2.1.0.RC3/single/spring-cloud-bus.html
RabbitMQ安裝
參考:https://www.cnblogs.com/zhangweizhong/p/5689209.html
大概步驟:
1、先去下載Erlang、RabbitMQ
2、先安裝Erlang環境、配置ERLANG_HOME環境變量、安裝RabbitMQ
3、激活RabbitMQ 管理插件,登錄http://localhost:15672,使用默認賬號登錄,用戶名、密碼都是:guest
代碼編寫
確保RabbitMQ中間件可用之后我們開始對上一篇的項目進行調整,我這里直接使用默認賬號連接RabbitMQ,5672是RabbitMQ的監聽端口
Config Server
maven引入bus-amqp
<!-- bus-RabbitMQ --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-bus-amqp</artifactId> </dependency>
配置文件添加對RabbitMQ的相關配置
#bus-rabbitMQ spring.cloud.bus.trace.enabled=true spring.rabbitmq.host=localhost spring.rabbitmq.port=5672 spring.rabbitmq.username=guest spring.rabbitmq.password=guest
同時,配置中心擔任調用/bus-refresh的任務
#暴露端點 management.endpoints.web.exposure.include=bus-refresh
Config Client
客戶端同時也要連接到消息總線
maven引jar
<!-- bus-RabbitMQ --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-bus-amqp</artifactId> </dependency>
配置文件添加
#bus-rabbitMQ spring.cloud.bus.trace.enabled=true spring.rabbitmq.host=localhost spring.rabbitmq.port=5672 spring.rabbitmq.username=guest spring.rabbitmq.password=guest
效果演示
啟動所有項目

Config Server訪問 http://localhost:1112/myspringboot-dev.properties/

Config Server訪問 http://localhost:10087/index

前往GitHub修改 huanzi.qch.config.server.username: 張三2

修改完之后回去刷新Config Server跟Config Client,server能實時更新獲取最新數據,client不能實時獲取最新數據,讀的是緩存


Config Server post調用 http://localhost:1112/actuator/bus-refresh

打印空?沒關系,刷新Config Client的http://localhost:10087/index,已經獲取到了最新數據

WebHook
GitHub的webhook允許在某些事件發生時通知外部服務。當指定的事件發生時,我們將向您提供的每個url發送POST請求。
登錄GitHub,前往創建一個WebHook


需要能被外網訪問,所以這里演示不了...

這樣,在每次push之后都會觸發webhook事件,從而實現Config配置中心的自動刷新
總結
更多springcloud bus配置請查閱官方文檔
代碼開源
代碼已經開源、托管到我的GitHub、碼雲:
