訊息群組如何與選擇器比較

 常見問題 > 使用 Apache ActiveMQ Classic > 訊息群組如何與選擇器比較

選擇器只是過濾器。訊息群組是一種將訊息分組在一起,傳送給同一個消費者的方式,用於分割應用程式或確保維護順序。

現在您可以手動實作訊息群組,讓每個消費者使用自己的選擇器來選擇特定的標頭。例如,如果您有消費者 A、B、C;您可以使用「A」、「B」、「C」作為 JMSXGroupID 標頭的值(或您喜歡的任何其他標頭名稱)。

然後,如果消費者 A 使用 JMXGroupID = 'A' 作為選擇器,它將是唯一取得 A 訊息的消費者;B 和 C 也是如此。

這有點模擬訊息群組。缺點是:

  • 您必須知道正在執行的消費者集合,才能知道您可以在標頭上放置哪些 A、B 或 C 的值。因此,如果您啟動一個新的消費者 D,您必須更改生產者以知道 D。使用訊息群組,您可以使用任何字串 - 通常字串將來自您的業務,例如產品代碼、客戶 ID、股票代碼名稱或某些東西(或數據的某些組合,例如 IBM 和 NASDAQ 和星期二)。

  • 如果由於任何原因消費者 B 停止運行,則沒有人會使用 B 的任何訊息 - 您必須知道手動重新啟動 B。使用訊息群組,系統會自動分割並為您進行負載平衡,並立即進行故障轉移。

  • 沒有任何東西可以阻止您意外地建立具有相同選擇器的 2 個執行緒 - 或網路上啟動具有相同選擇器的 2 個進程,並意外地從同一組訊息中取用訊息,這完全破壞了順序;使用訊息群組,您不必擔心這個問題 - 因為它保證整個系統中只有 1 個執行緒會依序一次處理來自一個群組的訊息 - 無論您啟動多少個消費者。

因此,總的來說,您可以使用選擇器手動分割自己。然而,訊息群組是一種自我分割和自動故障轉移機制,它還保證單個執行緒將一次依序處理特定訊息群組中的訊息。

Apache、ActiveMQ、Apache ActiveMQ、Apache 羽毛標誌和 Apache ActiveMQ 專案標誌是 The Apache Software Foundation 的商標。 版權所有 © 2024,The Apache Software Foundation。 在 Apache License 2.0 授權下發佈。