Spring Cloud Bus消息總線

前面https://blog.csdn.net/didi7696/article/details/80337946講到Spring Cloud Config把配置文件放到gitHub上來讀取。通過/refresh接口來更新讀取修改的文件,從而可以讀取新的值。但是,若所有觸發操作均需要我們手工去維護Web Hook中的應用位置的話,這隨着系統的不斷擴張,會變的越來越難以維護,而消息代理中間件是解決該問題最爲合適的方案。是否還記得我們在介紹消息代理中的特點時有提到過這樣一個功能:消息代理中間件可以將消息路由到一個或多個目的地。利用這個功能,我們就能完美的解決該問題,下面我們來說說Spring Cloud Bus中的具體實現方案。現在通過Spring Cloud Bus在多個客戶端的情況下只要通過/bus/refresh(post請求)這個接口刷新一次,所有的客戶端讀取的將是最新的配置文件的內容。

在前面項目的基礎上增加如下的內容

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-bus-amqp</artifactId>
</dependency>

配置文件中配置RabbitMQ的信息

spring.rabbitmq.host=localhost
spring.rabbitmq.port=5672
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest

先啓動配置文件服務端在分別啓動多個配置文件客戶端(端口號不同)
通過post請求訪問其中一個客戶端的/bus/refresh接口,到這裏,我們已經能夠通過Spring Cloud Bus來實時更新總線上的屬性配置了。所有的客戶端都可以獲得最新的profile的值。

工作原理:
這裏寫圖片描述

圖中的Gi倉庫,config Server 以及ServerA都被引入在Rabbit MQ的消息總線上。當其中一個ServerA的/bus/refreshi接口被訪問的時候,被訪問的ServerA會向消息總線方式發送消息並獲取最新的配置,消息總線的消息事件會被其他的ServerA獲取並從Git倉庫獲取最新的消息

參考:
http://blog.didispace.com/springcloud7/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章