1. 程式人生 > >史上最簡單的SpringCloud教程 | 第八篇: 訊息匯流排(Spring Cloud Bus)

史上最簡單的SpringCloud教程 | 第八篇: 訊息匯流排(Spring Cloud Bus)

最新Finchley版本請訪問:
https://www.fangzhipeng.com/springcloud/2018/08/30/sc-f8-bus/
或者
http://blog.csdn.net/forezp/article/details/81041062

Spring Cloud Bus 將分散式的節點用輕量的訊息代理連線起來。它可以用於廣播配置檔案的更改或者服務之間的通訊,也可以用於監控。本文要講述的是用Spring Cloud Bus實現通知微服務架構的配置檔案的更改。

本文還是基於上一篇文章來實現。按照官方文件,我們只需要在配置檔案中配置 spring-cloud-starter-bus-amqp ;這就是說我們需要裝rabbitMq,點選rabbitmq下載。至於怎麼使用 rabbitmq,搜尋引擎下。

在pom檔案加上起步依賴spring-cloud-starter-bus-amqp,完整的配置檔案如下:

 
 

在配置檔案application.properties中加上RabbitMq的配置,包括RabbitMq的地址、埠,使用者名稱、密碼,程式碼如下:

 
 

如果rabbitmq有使用者名稱密碼,輸入即可。

依次啟動eureka-server、confg-cserver,啟動兩個config-client,埠為:8881、8882。

訪問http://localhost:8881/hi 或者http://localhost:8882/hi 瀏覽器顯示:

foo version 3

這時我們去程式碼倉庫將foo的值改為“foo version 4”,即改變配置檔案foo的值。如果是傳統的做法,需要重啟服務,才能達到配置檔案的更新。此時,我們只需要傳送post請求:http://localhost:8881/bus/refresh,你會發現config-client會重新讀取配置檔案

Paste_Image.png

重新讀取配置檔案:

Paste_Image.png

這時我們再訪問http://localhost:8881/hi 或者http://localhost:8882/hi 瀏覽器顯示:

foo version 4

另外,/bus/refresh介面可以指定服務,即使用"destination"引數,

雅思培訓一般多少錢比如 “/bus/refresh?destination=customers:**” 即重新整理服務名為customers的所有服務,不管ip。

此時的架構圖:
Paste_Image.png

當git檔案更改的時候,通過pc端用post 向埠為8882的config-client傳送請求/bus/refresh/;此時8882埠會發送一個訊息,由訊息匯流排向其他服務傳遞,從而使整個微服務叢集都達到更新配置檔案。

可以用作自定義的Message Broker,只需要spring-cloud-starter-bus-amqp, 然後再配置檔案寫上配置即可,同上。

Tracing Bus Events:
需要設定:spring.cloud.bus.trace.enabled=true,如果那樣做的話,那麼Spring Boot TraceRepository(如果存在)將顯示每個服務例項傳送的所有事件和所有的ack,比如:(來自官網)

 
 

本文原始碼下載:
https://github.com/forezp/SpringCloudLearning/tree/master/chapter8