ApsaraMQ for RocketMQ は、パブリッシュ/サブスクライブモデルに基づいて構築された分散メッセージングミドルウェアです。非同期メッセージ配信によってプロデューサーとコンシューマーをデカップリングし、分散アーキテクチャにおける非同期デカップリングやピーク負荷シフトに適しています。
同期リンク上でリアルタイム応答が必要なユースケースでは、代わりにリモートプロシージャコール (RPC) ソリューションを使用してください。ビジネスシナリオと主要要件に基づいて製品を選択してください。
システムにおけるメッセージフロー
すべてのメッセージは、生成、保存、消費の 3 つの段階を経ます。

プロデューサーがメッセージを作成し、ApsaraMQ for RocketMQ サーバーに送信します。
コンシューマーは、コンシューマーグループに属し、トピックをサブスクライブしてメッセージを処理します。
基本概念
生成
プロデューサー:メッセージを作成して送信する、軽量で匿名のランタイムエンティティです。プロデューサーは通常、ビジネス呼び出しチェーンの上流に統合されます。
保存
トピック:メッセージの転送と保存のための論理コンテナです。各トピックには水平スケーリングを可能にする複数のキューが含まれます。
Lite トピック (LiteTopic):Lite タイプのトピック配下にある二次リソースです。各 Lite トピックにはデフォルトで 1 つのキューが含まれます。
メッセージキュー (MessageQueue):Kafka のパーティションに類似する、メッセージの保存と転送の基本単位です。各キューはストリームベースの無限キュー構造を使用し、メッセージは順次保存されます。
メッセージ:データ転送の最小単位です。メッセージは初期化、送信、保存の後は不変です。
消費
コンシューマーグループ (ConsumerGroup):複数のコンシューマーを管理する論理グループです。コンシューマーグループは互いに独立しています。各グループはサブスクライブしているトピックからメッセージの完全なセットを受信して消費するため、グループ間で同じメッセージを奪い合ったり共有したりすることはありません。グループ内のすべてのコンシューマーは同じ消費ロジックと設定を共有し、連携してサブスクライブしたトピックのメッセージを処理します。これにより、消費能力の水平スケーリングが可能になります。
コンシューマー:メッセージを受信して処理するランタイムエンティティです。コンシューマーは通常、ビジネス呼び出しチェーンの下流に統合されます。各コンシューマーは特定のコンシューマーグループに属する必要があります。
サブスクリプション:コンシューマーグループレベルで、メッセージフィルタリング、再試行動作、消費進捗の復元を制御するルールセットです。サブスクリプションは永続化されます。つまり、サーバーの再起動やクライアントの切断後も保持されます。例外はフィルター式で、こちらは永続化されません。
同期通信と非同期通信
分散サービスは、主に同期 RPC と非同期メッセージングの 2 つのパターンで通信します。ApsaraMQ for RocketMQ は非同期メッセージングを使用します。
同期 RPC

同期 RPC モデルでは、呼び出し元が要求を呼び出し先へ直接送信し、呼び出し先が直ちに応答を返します。
ここでの "Synchronous" は、プログラミング API ではなく通信モデルを指します。RPC 呼び出しは非同期かつノンブロッキングのプログラミングスタイルを使用できますが、このモデルでは、指定された期間内にターゲットのエンドポイントから直接応答が返されることが要求されます。
非同期メッセージング

非同期モデルでは、呼び出し元が要求をメッセージに変換し、メッセージングミドルウェアに送信します。メッセージの送信に成功した時点で呼び出しは完了します。その後、ミドルウェアがメッセージを下流のサービスへ確実に配信し、対応するタスクが実行されることを保証します。
メリット | 効果 |
スター型トポロジ | 上流と下流のサービスはいずれもミドルウェアにのみ接続するため、シンプルで保守しやすいトポロジが構成されます。 |
疎結合サービス | 上流と下流のサービスは独立してアップグレードおよび変更できます。ミドルウェアがバッファリングと非同期リカバリを処理します。 |
ピーク負荷シフト | ミドルウェアには強力なトラフィックのバッファリングおよびシェーピング機能が備わっていることが多く、スパイクによって下流サービスに過大な負荷がかかるのを防ぎます。 |
ポイントツーポイントメッセージングとパブリッシュ/サブスクライブメッセージング
メッセージングミドルウェアは、2 つの配信モデルのいずれかを使用します。ApsaraMQ for RocketMQ はパブリッシュ/サブスクライブモデルを使用します。
機能 | ポイントツーポイント | パブリッシュ/サブスクライブ |
コンシューマーの識別 | 匿名:コンシューマーは 1 つのキューを共有し、独立した識別子を持ちません。 | 独立:各コンシューマーグループは独自の識別子を持ちます。 |
配信パターン | 1 対 1:コンシューマーがメッセージを奪い合い、各メッセージは厳密に 1 つのコンシューマーによってのみ処理されます。 | 1 対多:各コンシューマーグループはすべてのメッセージのコピーを受信します。 |
スケーラビリティ | 実装が容易 | より拡張しやすい:複数の独立した下流のコンシューマーをサポート |
ポイントツーポイントモデル

ポイントツーポイントモデル (キューベースのメッセージングとも呼ばれます) では、上流と下流の間の通信識別子はキューのみです。複数のコンシューマーがキュー内のメッセージを奪い合い、各メッセージは 1 つのコンシューマーだけが処理します。
パブリッシュ/サブスクライブモデル

パブリッシュ/サブスクライブモデルでは、各コンシューマーグループは独立した識別子を持ちます。同一トピック内のメッセージは複数のコンシューマーグループに配信でき、各グループはすべてのメッセージのコピーを受信します。異なるコンシューマーグループは互いに影響を及ぼしません。