1. 程式人生 > >Spring-cloud微服務實戰【十】:訊息匯流排Bus

Spring-cloud微服務實戰【十】:訊息匯流排Bus

  回憶一下,在上一篇文章中,我們使用了分散式配置中心config來管理所有微服務的配置檔案,那這樣有沒有什麼問題?有,那就是無法配置檔案無法自動更新,當我的git伺服器上的配置檔案更新後,不能同步更新到config-server,需要config-server重啟才能生效,這在生產環境下,肯定是不可以的,我們需要當git伺服器的檔案更新後,自動同步到config-server,並且config-server不需要重啟就能獲取到最新的配置,因此我們需要藉助spring cloud bus訊息匯流排來實現該功能.其實spring cloud bus 本質上是利用MQ(訊息中介軟體,常用的是RabbitMQ或者kafka)實現訊息的推送功能.

spring cloud bus的使用

  上面我們說到spring cloud bus需要藉助MQ,本文中我們藉助RabbitMQ來實現該功能.首先需要我們在本機安裝好RabbitMQ(安裝過程就不再說了,大家發揮各自的聰明才智吧~),然後啟動RabbitMQ:

  以上列印資訊說明已經啟動好了,讓我們登入網頁版的控制檯看一下,rabbitMQ控制檯預設埠號15672:

  出現該頁面說明rabbitMQ已經成功啟動了,大家可以用預設的賬號密碼guest/guest登入進去看一下:

  然後我們將[dhp-micro-service-config-server]複製一份為[dhp-micro-service-config-bus-server]:


  然後新增maven依賴:

  配置檔案我們改造一下,使用yml檔案,並且新增rabbitMQ相關配置,並且由於需要暴露refresh的地址,因此方便起見直接使用星號表示暴露全部地址:

  然後啟動試一下:


  說明已經成功了,然後現在將[dhp-micro-eureka-server-config]複製一份為[dhp-micro-eureka-server-config-bus]:

  然後新增maven依賴:

  然後修改git伺服器上的配置檔案,新增rabbitMQ的相關配置,以及新增一些用於測試自動重新整理的內容:

  修改[dhp-micro-eureka-server-config-bus]程式碼,新增user.config的相關配置:

  然後啟動[dhp-micro-eureka-server-config-bus]:


  接下來我們測試一下自動重新整理,首先修改git伺服器上的使用者相關資訊:

  然後再訪問一下使用者資訊的地址:

  嗯?什麼情況?沒有成功?是配置出現問題了嗎?還是其他什麼問題?其實不是的,我們說現在eureka-server作為config-server的一個消費者,通過rabbitMQ進行監聽,現在config-server並沒有發出訊息通知,消費者自然不能接收到更新訊號了,因此我們需要在在config-server手動發一個訊號:

  在1.X的版本時,可以直接使用GET請求訪問,2.X版本只能使用POST請求,因此我們藉助Postman來發送post請求:

  此時再看一下userConfig資訊:

  這樣自動重新整理就成功了.但是生產環境不可能每次都需要我們手動發起請求,因此我們可以藉助git的webhook的方式,自動幫助我們重新整理:

  這裡的Payload URL填寫我們的重新整理地址即可,比如:

  但是要注意這個地址必須是公網地址,否則公網訪問不了不生效!

  自此,我們的整個微服務spring cloud就結束了,喜歡的童鞋們請趕緊收藏吧!

  本文的GitHub地址

本文由部落格一文多發平臺 OpenWrite 釋出!