このトピックでは、ApsaraMQ for RocketMQ の使用者グループの定義、モデル、内部属性、動作上の制約、バージョンの互換性、および使用上の推奨事項について説明します。
定義
ApsaraMQ for RocketMQ の使用者グループは、同一の消費動作を持つ複数のコンシューマーで構成される負荷分散グループです。
実行中のエンティティであるコンシューマーとは異なり、使用者グループは論理リソースです。ApsaraMQ for RocketMQ では、使用者グループに複数のコンシューマーを初期化して、消費パフォーマンスをスケールアウトし、高可用性のディザスタリカバリを実装できます。
使用者グループには、以下の消費動作が定義されています。同じグループ内のすべてのコンシューマーは、これらの共有された動作とグループの負荷分散ポリシーに基づいてメッセージを消費します。
サブスクリプション関係: ApsaraMQ for RocketMQ は、使用者グループ レベルでサブスクリプション関係を管理および追跡します。詳細については、「サブスクリプション関係」をご参照ください。
配信順序: ApsaraMQ for RocketMQ サーバーは、コンシューマーへのメッセージの順序付き配信と同時配信の両方をサポートします。配信方法は、使用者グループ レベルで構成されます。詳細については、「順序付きメッセージ」をご参照ください。
消費リトライポリシー: これは、コンシューマーがメッセージの消費に失敗した場合に適用されるポリシーです。このポリシーには、最大リトライ回数とデッドレターキューの設定が含まれます。詳細については、「消費リトライ」をご参照ください。
モデル関係
ApsaraMQ for RocketMQ ドメインモデルでは、使用者グループはメッセージフロー内で次のように位置付けられます:
- プロデューサーはメッセージを生成し、ApsaraMQ for RocketMQ ブローカーに送信します。
- ApsaraMQ for RocketMQ ブローカーは、メッセージが受信された順序で、Topic によって指定されたキューにメッセージを保存します。
- コンシューマーは、指定されたサブスクリプションに基づいて ApsaraMQ for RocketMQ ブローカーからメッセージを取得して消費します。
内部属性
サブスクリプション関係定義: 使用者グループに関連付けられたサブスクリプション関係のセットです。これには、コンシューマーがサブスクライブする Topic とメッセージフィルタリングルールが含まれます。コンシューマーは、使用者グループにサブスクリプション関係を動的に登録します。ApsaraMQ for RocketMQ サーバーは、これらのサブスクリプション関係を永続化し、メッセージ消費の進捗を追跡するために使用します。詳細については、「サブスクリプション関係」をご参照ください。
消費ロジックの制限
- メッセージ配信順序
- 消費リトライポリシー
バージョンの互換性
- ApsaraMQ for RocketMQ 5.x ブローカー: コンシューマーは、関連付けられている使用者グループからメッセージ配信順序と消費リトライポリシーを取得します。消費ロジックはすべてのコンシューマーで同じです。クライアントでメッセージ配信順序や消費リトライポリシーを指定する必要はありません。
- ApsaraMQ for RocketMQ 3.x および 4.x ブローカー: メッセージ配信順序と消費リトライポリシーは、クライアント上の API 操作によって定義されます。使用者グループ内のすべてのコンシューマーの消費ロジックが同じであることを確認するために、クライアントでメッセージ配信順序と消費リトライポリシーを指定する必要があります。
以前のバージョンの SDK を使用して ApsaraMQ for RocketMQ 5.x ブローカーにアクセスする場合、コンシューマーの消費ロジックはコンシューマークライアント上の API 操作の構成によって決定されます。
使用上の推奨事項
ビジネスロジックに基づいてグループに分割する
ApsaraMQ for RocketMQ では、コンシューマーと Topic は多対多の関係にあります。使用者グループを設計および作成する際は、次の原則に従ってください:
一貫した配信順序を確保する: 同じ使用者グループ内のすべてのコンシューマーは、順序付きまたは同時のいずれかである同じ配信順序を使用する必要があります。異なる配信順序を必要とするビジネスシナリオに同じ使用者グループを使用しないでください。
ビジネスタイプ別にグループ化する: 通常、1 つの使用者グループは 1 つの Topic に対応します。異なるビジネスドメインでは、メッセージフィルタリング属性や消費リトライポリシーなど、メッセージ消費要件が異なります。したがって、異なるビジネスドメインに属する Topic からメッセージを消費するには、異なる使用者グループを使用する必要があります。単一の使用者グループが 10 を超える Topic からメッセージを消費しないことをお勧めします。
使用者グループを管理するための自動化されたメカニズムの使用を避ける
ApsaraMQ for RocketMQ アーキテクチャでは、使用者グループは状態管理に使用される論理リソースです。各使用者グループは、消費状態、メッセージのバックログ、監視可能なメトリック、およびモニタリングデータに関連付けられています。したがって、本番環境では使用者グループのリソースを厳密に管理する必要があります。使用者グループを任意に追加、削除、変更、またはクエリしないでください。