訊息代理程式是什麼?

應用程式之間進行通訊的方法,現正面對越來越大的挑戰,而訊息中介軟體可以簡化這項挑戰,並允許通用通訊基礎設施增長和擴充,以滿足最嚴苛的條件。但是通訊能以各式各樣的形式出現,因此訊息中介軟體提供的通訊方法也不例外。

訊息代理程式圖

訊息中介軟體所使用的通訊方法之一,是以伺服器為基礎的訊息代理程式。來源應用程式(生產者)會使用訊息代理程式,將訊息發送到一個伺服器處理程序,該程序可以進行數據整理、路由、訊息轉換、持續儲存並傳遞到所有適當目的地(消費者)。訊息代理程式的定義特徵是,代理程式本身就是一項個別服務,生產者和消費者均使用標準或專屬傳輸協定來與代理進行通訊。訊息代理程式通常會提供客戶端的所有狀態管理和追蹤功能,因此個別應用程式並不需要承擔此責任,而且訊息代理程式本身就已內建了複雜的訊息傳遞功能。

與訊息代理程式通訊的兩種基本形式:

  • 發佈和訂閱(主題)
  • 點對點(佇列)
在 Kafka,Pulsar 和其他消息傳遞技術之間進行選擇
在 Kafka,Pulsar 和其他消息傳遞技術之間進行選擇
如何選擇適合您業務的消息傳遞技術?請閱讀我們最新的白皮書以了解更多訊息。

發佈和訂閱訊息

在發佈和訂閱訊息系統中,是由生產者發送關於主題的訊息。在這個模式中,生產者被稱為發佈者,消費者被稱為訂閱者;一或多個發佈者可以發佈同一個主題,而來自一或多個發佈者的訊息可以被多個訂閱者接收。訂閱者訂閱主題之後,所有發佈到該主題的訊息,都會被該主題的所有訂閱者接收,這個模式可根據應用程式所訂閱的主題,來提供簡單的興趣導向遞送。

點對點通訊

點對點通訊是最簡單的形式,只有一位生產者和一位消費者。這種類型的訊息傳遞,通常使用佇列來儲存生產者發送的訊息,直到它們被消費者接收為止。訊息生產者將訊息發送到佇列,而訊息消費者從佇列中檢索訊息,並發送訊息已收到的確認。多個生產者可以向同一個佇列發送訊息,多個消費者可以從同一個佇列接收訊息。當要用到多位消費者時,每位消費者通常會收到一部分的訊息流以允許並行處理。

以服務為基礎的訊息代理程式

以服務為基礎的訊息代理程式有很多優點,包括集中處理、集中訊息遞送、集中數據持續儲存等。範例包括許多專用訊息代理程式、Java 訊息服務 (JMS) 部署和開放原始碼產品,如Apache Kafka 、Apache Pulsar 和 Eclipse Mosquitto。

在某些情況下,需要去中心化的通訊模式,這種「無代理」或點對點方法,通常用於需要極低延遲的使用案例,提供一種機制來支援應用程式之間進行直接通訊。