本文介紹雲訊息佇列 RocketMQ 版中消費者分組(ConsumerGroup)的定義、模型關係、內部屬性、行為約束、版本相容性及使用建議。
定義
消費者分組是雲訊息佇列 RocketMQ 版系統中承載多個消費行為一致的消費者的負載平衡分組。
和消費者不同,消費者分組並不是運行實體,而是一個邏輯資源。在雲訊息佇列 RocketMQ 版中,通過消費者分組內初始化多個消費者實現消費效能的水平擴充以及高可用容災。
在消費者分組中,統一定義以下消費行為,同一分組下的多個消費者將按照分組內統一的消費行為和負載平衡策略消費訊息。
訂閱關係:雲訊息佇列 RocketMQ 版以消費者分組的粒度管理訂閱關係,實現訂閱關係的管理和追溯。具體資訊,請參見訂閱關係(Subscription)。
投遞順序性:雲訊息佇列 RocketMQ 版的服務端將訊息投遞給消費者消費時,支援順序投遞和並發投遞,投遞方式在消費者分組中統一配置。具體資訊,請參見順序訊息。
消費重試策略: 消費者消費訊息失敗時的重試策略,包括重試次數、無效信件佇列設定等。具體資訊,請參見消費重試。
模型關係
在雲訊息佇列 RocketMQ 版的領域模型中,消費者分組的位置和流程如下:
- 訊息由生產者初始化並發送到雲訊息佇列 RocketMQ 版服務端。
- 訊息按照到達雲訊息佇列 RocketMQ 版服務端的順序儲存到主題的指定隊列中。
- 消費者按照指定的訂閱關係從雲訊息佇列 RocketMQ 版服務端中擷取訊息並消費。
內部屬性
訂閱關係定義:當前消費者分組關聯的訂閱關係集合。包括消費者訂閱的主題,以及訊息的過濾規則等。訂閱關係由消費者動態註冊到消費者分組中,雲訊息佇列 RocketMQ 版服務端會持久化訂閱關係並匹配訊息的消費進度。更多資訊,請參見訂閱關係(Subscription)。
行為約束
- 投遞順序
- 消費重試策略
版本相容性
- 雲訊息佇列 RocketMQ 版服務端5.x版本:上述消費者的消費行為從關聯的消費者分組中統一擷取,因此,同一分組內所有消費者的消費行為必然是一致的,用戶端無需關注。
- 雲訊息佇列 RocketMQ 版服務端3.x/4.x歷史版本:上述消費邏輯由消費者用戶端介面定義,因此,您需要自己在消費者用戶端設定時保證同一分組下的消費者的消費行為一致。
若您使用雲訊息佇列 RocketMQ 版服務端5.x版本,用戶端使用歷史版本SDK,則消費者的消費邏輯以消費者用戶端介面的設定為準。
使用建議
按照業務合理拆分分組
雲訊息佇列 RocketMQ 版的消費者和主題是多對多的關係,對於消費者分組的拆分設計,建議遵循以下原則:
消費者的投遞順序一致:同一消費者分組下所有消費者的消費投遞順序是相同的,統一都是順序投遞或並發投遞,不同業務情境不能混用消費者分組。
消費者業務類型一致:一般消費者分組和主題對應,不同業務域對訊息消費的要求不同,例如訊息過濾屬性、消費重試策略不同。因此,不同業務域主題的消費建議使用不同的消費者分組,避免一個消費者分組消費超過10個主題。
消費者分組管理盡量避免自動化機制
在雲訊息佇列 RocketMQ 版架構中,消費分組屬於狀態管理類的邏輯資源,每個消費分組都會涉及關聯的消費狀態、堆積資訊、可觀測指標和監控採集資料。因此,生產環境需要嚴格管理消費者分組資源,請勿隨意進行增、刪、改、查操作。