消費者群組
本節說明 Apache RocketMQ 中消費者群組的定義、模型關係、內部屬性和行為約束。本主題還提供消費者群組的版本相容性資訊和使用說明。
定義
消費者群組是負載平衡群組,其中包含在 Apache RocketMQ 中使用相同消費行為的消費者。
與作為執行實體的消費者不同,消費者群組是邏輯資源。Apache RocketMQ 在消費者群組中初始化多個消費者,以實現消費效能的擴充和高可用性災難復原。
在消費者群組中,消費者根據群組中定義的消費行為和負載平衡政策來消費訊息。以下部分說明已定義的消費行為
訂閱:Apache RocketMQ 根據消費者群組管理和追蹤訂閱。如需更多資訊,請參閱 訂閱。aa
傳遞順序:Apache RocketMQ 代理程式使用順序傳遞或並發傳遞的方式將訊息傳遞給消費者。您可以在消費者群組中設定傳遞方法。如需更多資訊,請參閱 fifo 訊息。
消費重試政策:當消費者無法消費訊息時使用的重試政策。此政策包含重試次數和死信佇列的設定。如需更多資訊,請參閱消費重試。
模型關係
下圖顯示 Apache RocketMQ 領域模型中消費者群組的位置。
訊息由生產者初始化並傳送到 Apache RocketMQ 伺服器。
訊息儲存在主題的指定佇列中,依據抵達 Apache RocketMQ 伺服器的順序。
消費者根據指定的訂閱關係從 Apache RocketMQ 伺服器取得並消費訊息。
內部屬性
消費者群組名稱
定義:消費者群組的名稱。消費者群組名稱用於區分消費者群組。消費者群組名稱在叢集中是全域唯一的。
值:由使用者建立並設定。如需更多資訊,請參閱參數限制。
傳遞順序
定義:Apache RocketMQ 將訊息傳遞給消費者用戶端的順序。
Apache RocketMQ 支援基於不同消費情境的順序傳遞和並行傳遞。如需更多資訊,請參閱FIFO 訊息。
- 值:預設的傳遞方法是並行傳遞。
消費重試政策
定義:當消費者無法消費訊息時使用的重試政策。如果消費者無法消費訊息,系統會根據政策將失敗的訊息重新傳遞給消費者以重新消費。如需更多資訊,請參閱消費重試。
值:消費重試政策包含下列項目
最大重試次數:訊息可以重新傳遞的最大次數。如果訊息無法被消費,且超過最大重試次數,則訊息會傳遞到死信佇列或被捨棄。
重試間隔:Apache RocketMQ 仲介重新傳遞失敗訊息的間隔。
如需瞭解最大重試次數和重試間隔的有效值和預設值,請參閱參數限制。
- 限制:重試間隔僅適用於推播消費者。
訂閱
- 定義:與目前消費者群組相關聯的訂閱關係集合。訂閱包含消費者訂閱的主題和消費者使用的訊息篩選規則。如需更多資訊,請參閱訂閱。
消費者動態地為消費者群組註冊訂閱。Apache RocketMQ 仲介會保留訂閱,並將訂閱與訊息的消費進度相符。
行為約束
在 Apache RocketMQ 領域模型中,消費者管理是透過消費者分組來實作,而同一個群組中的消費者會共享訊息以進行消費。因此,為了確保群組中訊息的正常載入和消費,Apache RocketMQ 要求同一個群組中的所有消費者保持下列消費行為一致
傳遞順序
消費重試政策
版本相容性
如行為約束中所述,同一個群組中所有消費者的傳遞順序和消費重試原則需要一致。
Apache RocketMQ 伺服器版本 5.x:前置消費者的消費行為由關聯的消費者群組取得。因此,同一個群組中所有消費者的消費行為必須一致,且客戶端不需要特別注意。
Apache RocketMQ 伺服器版本 3.x/ 4.x 歷史:前置消費邏輯是由消費者客戶端介面定義。因此,在設定消費者客戶端時,必須確保同一個群組中消費者的消費行為一致。
如果您使用 Apache RocketMQ 伺服器版本 5.x,而客戶端使用前一版本的 SDK,則消費者的消費邏輯會受到消費者客戶端介面的設定影響。
使用注意事項
根據您的業務需求建立消費者群組
在 Apache RocketMQ 中,消費者和主題處於多對多的對應關係。建議您在建立消費者群組之前注意下列規則
一致的訊息傳遞順序:消費者群組中的所有消費者必須具有相同的一致訊息傳遞順序。傳遞方式可以是順序傳遞或並行傳遞。建議您不要對不同的業務情境使用同一個消費者群組。
一致的業務類型:一個消費群組對應一個主題。不同的業務領域對訊息消費有不同的需求,例如訊息過濾規則和消費重試策略。建議您在不同的業務領域使用不同的消費群組。同時建議您在一個消費群組中最多新增 10 個主題。
避免使用自動化機制管理消費群組
在 Apache RocketMQ 架構中,消費群組是管理消費者狀態的邏輯資源。每個消費群組都關聯著各種資料,例如消費狀態、累積訊息、可觀察指標和監控資料。建議您嚴格管理您的消費群組。新增、刪除、修改或查詢消費群組時請謹慎操作。
Apache RocketMQ 提供了自動消費群組建立功能。但是,如果您在生產環境中啟用此功能,可能會建立大量的消費群組。大量的消費群組難以管理和回收,並會浪費系統資源。因此,建議您僅在測試環境中使用此功能。