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:
file
  以上打印信息說明已經啟動好了,讓我們登錄網頁版的控制台看一下,rabbitMQ控制台默認端口號15672:
file
  出現該頁面說明rabbitMQ已經成功啟動了,大家可以用默認的賬號密碼guest/guest登錄進去看一下:
file
  然后我們將[dhp-micro-service-config-server]復制一份為[dhp-micro-service-config-bus-server]:
file
  然后新增maven依賴:
file
  配置文件我們改造一下,使用yml文件,並且新增rabbitMQ相關配置,並且由於需要暴露refresh的地址,因此方便起見直接使用星號表示暴露全部地址:
file
  然后啟動試一下:
file
file
  說明已經成功了,然后現在將[dhp-micro-eureka-server-config]復制一份為[dhp-micro-eureka-server-config-bus]:
file
  然后新增maven依賴:
file
  然后修改git服務器上的配置文件,新增rabbitMQ的相關配置,以及新增一些用於測試自動刷新的內容:
file
  修改[dhp-micro-eureka-server-config-bus]代碼,新增user.config的相關配置:
file
  然后啟動[dhp-micro-eureka-server-config-bus]:
file
file
  接下來我們測試一下自動刷新,首先修改git服務器上的用戶相關信息:
file
  然后再訪問一下用戶信息的地址:
file
  嗯?什么情況?沒有成功?是配置出現問題了嗎?還是其他什么問題?其實不是的,我們說現在eureka-server作為config-server的一個消費者,通過rabbitMQ進行監聽,現在config-server並沒有發出消息通知,消費者自然不能接收到更新信號了,因此我們需要在在config-server手動發一個信號:
file
  在1.X的版本時,可以直接使用GET請求訪問,2.X版本只能使用POST請求,因此我們借助Postman來發送post請求:
file
  此時再看一下userConfig信息:
file
  這樣自動刷新就成功了.但是生產環境不可能每次都需要我們手動發起請求,因此我們可以借助git的webhook的方式,自動幫助我們刷新:
file
  這里的Payload URL填寫我們的刷新地址即可,比如:
file
  但是要注意這個地址必須是公網地址,否則公網訪問不了不生效!

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

  本文的GitHub地址

本文由博客一文多發平台 OpenWrite 發布!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM