springcloud 入門 9 (消息總線)

Spring cloud bus:

    Spring cloud bus經過輕量消息代理鏈接各個分佈的節點。這會用在廣播狀態的變化(例如配置變化)或者其餘的消息指令。Spring bus的一個核心思想是經過分佈式的啓動器對spring boot應用進行擴展,也能夠用來創建一個多個應用之間的通訊頻道。目前惟一實現的方式是用AMQP消息代理做爲通道,一樣特性的設置(有些取決於通道的設置)在更多通道的文檔中。git

    Spring cloud bus被國內不少都翻譯爲消息總線,也挺形象的。你們能夠將它理解爲管理和傳播全部分佈式項目中的消息既可,其實本質是利用了MQ的廣播機制在分佈式的系統中傳播消息,目前經常使用的有Kafka和RabbitMQ。利用bus的機制能夠作不少的事情,其中配置中心客戶端刷新就是典型的應用場景之一,咱們用一張圖來描述bus在配置中心使用的機制。github

    

根據此圖咱們能夠看出利用Spring Cloud Bus作配置更新的步驟:

1、提交代碼觸發post給客戶端A發送bus/refresh
2、客戶端A接收到請求從Server端更新配置而且發送給Spring Cloud Bus
3、Spring Cloud bus接到消息並通知給其它客戶端
4、其它客戶端接收到通知,請求Server端獲取最新配置
5、所有客戶端均獲取到最新的配置

搭建步驟:

  只須要在client的基本上進行項目改造既可:spring

  第一步:引入rabbitmq。spring-cloud-starter-bus-amqp分佈式

    

  第二步:啓動類加註解  @RefreshScopepost

    

  第三步:修改配置文件:測試

    

  第四步:啓動測試:先啓動服務中心。再啓動配置中心服務端,最後啓動配置文件客戶端spa

    

 

    

 

     這時咱們去代碼倉庫改變配置文件foo的值。若是是傳統的作法,須要重啓服務,才能達到配置文件的更新。此時,咱們只須要發送post請求:http://localhost:9008/actuator/bus-refresh,你會發現config-client會從新讀取配置文件翻譯

   

  到這,總線基本上是生效了。後期咱們會把這個amqp放到配置中心的服務端,由於如今是入門,暫不介紹那麼多,腦子裏有這個思想就行。3d

相關文章
相關標籤/搜索