SpringCloud學習筆記——消息總線

在微服務的架構中,會使用輕量級的消息代理去構建一個消息主題,讓微服務中所有的實例都連接上來,主題中生產出的所有消息會被所有實例監聽並且消費,這就稱之爲消息總線,有點兒類似於計算機架構中的消息總線的概念。有了這樣一條總線就可以很方便的廣播一些需要所有實例知曉的消息,例如上一篇我們剛剛完成的配置變更。

消息代理

消息代理(Message Broker)是一種架構模式,它再各個應用之間進行調度通知的作用,並且降低應用間的耦合性,消息代理是一箇中間件產品,核心就是一個消息的路由程序,實現消息的接受和分發。目前市面上有很多開源的成熟產品供大家使用,比如ActiveMQ,Kafka,RabbitMQ,RocketMQ等,目前Spring Cloud Bus僅支持RabbitMQ和Kafka,下面我們介紹一下如何使用RabbitMQ來實現消息總線。

RabbitMQ

RabbitMQ作爲一款成熟的開源消息中間件,其基本概念和原理在搜索引擎中成千上萬,我這裏就不贅述了,有興趣的同學可以大概瞭解一下RabbitMQ的各個定義,有利於後續的學習。

這裏推薦一篇文章,詳細的描述了在windows下如何正確安裝RabbitMQ並啓動管理平臺,我把鏈接貼出來供大家參考:

https://blog.csdn.net/newbie_907486852/article/details/79788471

如果你訪問http://localhost:15672/#/users能夠成功顯示管理平臺登錄界面,則說明你的安裝成功了,使用guest/guest登錄即可。

快速入門

在上一篇中我們實現了配置中心的服務化以及動態更新,但是動態更新其實仍然屬於一種僞動態,因爲實際上需要我們手動刷新/refresh接口才可以,接下來我們通過rabbitmq和Spring Cloud Bus來實現真正的動態更新。

我們繼續使用前面的config-client項目,在項目中添加依賴spring-cloud-starter-bus-amqp:

implementation 'org.springframework.cloud:spring-cloud-starter-bus-amqp'

在bootstrap.yml配置文件中添加有關rabbitmq的連接配置,這裏我使用了我自建的springcloud用戶,如果你沒有自建的話可以使用默認的guest用戶:

spring:
  rabbitmq:
    host: localhost
    port: 5672
    username: springcloud
    password: 123456

然後我們啓動兩個config-client,端口號分別爲7777和7778,此時按照之前的測試方法,當在git中修改from值後,再次調用http://localhost:7777/getFrom接口發現並沒有返回最新值,此時POST調用http://localhost:7778/actuator/bus-refresh之後,再次請求http://localhost:7777/getFrom接口,會發現返回值已改變,說明我們的Spring Cloud Bus已經通過mq通知了所有應用刷新from值

最後我們在github的倉庫setting中進行web hook的設置,webhook是指在你的git遠程倉庫發生變化時允許git向你設置的指定路徑發送請求,這裏要求稍微高一些,需要將我們的服務部署到服務器上並且通過外網可以正常訪問,將我們的/bus-refresh路徑填寫上去就可以了,這裏就不詳細的介紹這個流程了,如果有機會在公司的項目中用到Spring Cloud Bus的話可以嘗試一下web hook功能

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