spring cloud bus 使用輕量級的訊息**來連線微服務架構中的各個服務,可以將其用於廣播狀態更改(例如配置中心配置更改)或其他管理指令,本文將對其用法進行詳細介紹。
我們通常會使用訊息**來構建乙個主題,然後把微服務架構中的所有服務都連線到這個主題上去,當我們向該主題傳送訊息時,所有訂閱該主題的服務都會收到訊息並進行消費。使用 spring cloud bus 可以方便地構建起這套機制,所以 spring cloud bus 又被稱為訊息匯流排。spring cloud bus 配合 spring cloud config 使用可以實現配置的動態重新整理。目前 spring cloud bus 支援兩種訊息**:rabbitmq 和 kafka,下面以 rabbitmq 為例來演示下使用spring cloud bus 動態重新整理配置的功能。
$ rabbitmq-plugins enable rabbitmq_management
輸入賬號密碼並登入:guest guest
使用 spring cloud bus 動態重新整理配置需要配合 spring cloud config 一起使用,我們使用之前文章中的 config-server、config-client 模組來演示下該功能。
給 config-server 新增訊息匯流排支援
在 pom.xml 中新增相關依賴
>
>
org.springframework.cloudgroupid
>
>
spring-cloud-starter-bus-amqpartifactid
>
dependency
>
>
>
org.springframework.bootgroupid
>
>
spring-boot-starter-actuatorartifactid
>
dependency
>
server
:port
:8904
spring::
name
: config-server
cloud
:config
:server
:git
:uri
: username
: antonio
password
:123456
clone-on-start
:true
# 開啟啟動時直接從git獲取配置
rabbitmq
:#rabbitmq相關配置
:#暴露bus重新整理配置的端點
web:
exposure
:include
:'bus-refresh'
給 config-client 新增訊息匯流排支援>
>
org.springframework.cloudgroupid
>
>
spring-cloud-starter-bus-amqpartifactid
>
dependency
>
新增配置檔案 bootstrap-amqp1.yml 及 bootstrap-amqp2.yml 用於啟動兩個不同的 config-client,兩個配置檔案只有埠號不同;
server
:port
:9004
spring::
name
: config-client
cloud
:config
:profile
: dev #啟用環境名稱
label
: dev #分支名稱
name
: config #配置檔案名稱
discovery
:enabled
:true
service-id
: config-server
rabbitmq
:#rabbitmq相關配置
:web
:exposure
:include
:'refresh'
動態重新整理配置演示
啟動所有服務後,我們登入rabbitmq的控制台可以發現spring cloud bus 建立了乙個叫springcloudbus的交換機及三個以 springcloudbus.anonymous開頭的佇列:
我們先修改 git 倉庫中 dev 分支下的 config-dev.yml 配置檔案:
# 修改前資訊
config
:info
:"config info for dev(dev)"
# 修改後資訊
config
:info
:"update config info for dev(dev)"
呼叫註冊中心的介面重新整理所有配置:http://localhost:8904/actuator/bus-refresh
重新整理後再分別呼叫 http://localhost:9004/configinfo 和 http://localhost:9005/configinfo 獲取配置資訊,發現都已經重新整理了
update config info for dev(dev)
如果只需要重新整理指定例項的配置可以使用以下格式進行重新整理,我們這裡以重新整理執行在 9004 埠上的 config-client 為例 http://localhost:8904/actuator/bus-refresh/config-client:9004。
webhooks 相當於是乙個鉤子函式,我們可以配置當向 git 倉庫 push **時觸發這個鉤子函式,這裡以 gitee 為例來介紹下其使用方式,這裡當我們向配置倉庫 push **時就會自動重新整理服務配置了。
Spring Cloud Bus 配置更新
spring cloud bus做配置更新步驟如下 1.提交 觸發post請求給bus refresh 2.server端接收到請求並傳送給spring cloud bus 3.spring cloud bus接到訊息並通知給其它客戶端 4.其它客戶端接收到通知,請求server端獲取最新配置 5....
Spring Cloud Bus訊息匯流排
前面講到spring cloud config把配置檔案放到github上來讀取。通過 refresh介面來更新讀取修改的檔案,從而可以讀取新的值。但是,若所有觸發操作均需要我們手工去維護web hook中的應用位置的話,這隨著系統的不斷擴張,會變的越來越難以維護,而訊息 中介軟體是解決該問題最為合...
SpringCloud Bus學習筆記
在學習springcloud時學習了springcloud bus,一直沒有成功,問題如下。1.0版本的 2.0版本的 我使用的版本為2.0的版本。而我們遇到的問題是 剛開始我用瀏覽器發出的請求 預設為get請求,機緣巧合之下,我說要不用postman試一下,剛好我的postman是預設post的請...