コンシューマグループ
このセクションでは、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は、自動コンシューマグループ作成機能を提供しています。ただし、本番環境でこの機能を有効にすると、多数のコンシューマグループが作成される可能性があります。多数のコンシューマグループは管理と回収が困難になり、システムリソースの無駄につながる可能性があります。したがって、この機能はテスト環境でのみ使用することをお勧めします。