1. 程式人生 > >第九章 訊息匯流排: Spring Cloud Bus

第九章 訊息匯流排: Spring Cloud Bus

  在微服務架構的系統中, 我們通常會使用輕量級的訊息代理來構建一個共用的訊息主題讓系統中所有微服務例項都連線上來, 由於該主題中產生的訊息會被所有例項監聽和消費, 所以我們稱它為訊息匯流排。 在總線上的各個例項都可以方便地廣播一些需要讓其他連
接在該主題上的例項都知道的訊息, 例如配置資訊的變更或者其他一些管理操作等
  由於訊息匯流排在微服務架構系統中被廣泛使用, 所以它同配置中心一樣, 幾乎是微服務架構中的必備元件。 Spring Cloud 作為微服務架構綜合性的解決方案,對此自然也有自己的實現, 這就是本章我們將要具體介紹的 Spring Cloud Bus。 通過使用 Spring Cloud Bus,
可以非常容易地搭建起訊息匯流排, 同時實現了一些訊息匯流排中的常用功能, 比如, 配合Spring Cloud Config 實現微服務應用配置資訊的動態更新等

訊息代理

  訊息代理 (Message Broker) 是一種訊息驗證、 傳輸、 路由的架構模式。 它在應用程式之間起到通訊排程並最小化應用之間的依賴的作用, 使得應用程式可以高效地解耦通訊過程。 訊息代理是一箇中間件產品, 它的核心是一個訊息的路由程式, 用來實現接收和分發
訊息, 並根據設定好的訊息處理流來轉發給正確的應用。 它包括獨立的通訊和訊息傳遞協議, 能夠實現組織內部和組織間的網路通訊。 設計代理的目的就是為了能夠從應用程式中傳入訊息, 並執行一些特別的操作, 下面這些是在企業應用中, 我們經常需要使用訊息代
理的場景:

  • 將訊息路由到一個或多個目的地
  • 訊息轉化為其他的表現方式
  • 執行訊息的聚集、 訊息的分解, 並將結果傳送到它們的目的地, 然後重新組合響應返回給訊息使用者
  • 呼叫Web服務來檢索資料
  • 響應事件或錯誤
  • 使用釋出-訂閱模式來提供內容或基於主題的訊息路由

目前已經有非常多的開源產品可以供大家使用, 比如:ActiveMQ、 Kafka、 RabbitMQ、RocketMQ、···

當前版本的Spring Cloud Bus僅支待兩款中介軟體產品: RabbitMQ和Kafka。 在下面的章節中, 我們將分別介紹如何使用這兩款訊息中介軟體與Spring Cloud Bus配合實現訊息匯流排