ApsaraMQ for RocketMQ は、アプリケーション間の非同期通信のために構築された分散メッセージングサービスです。各 Alibaba Cloud リージョン 内の複数のデータセンターで実行されるため、単一のデータセンターが停止した場合でも、メッセージの公開とサブスクライブは利用可能です。
一般的なユースケースは次のとおりです。
非同期デカップリング -- アップストリームサービスをダウンストリーム処理から分離し、各コンポーネントが独立してスケーリングできるようにします。たとえば、注文システムは注文イベントを公開し、ダウンストリームサービス (支払い、在庫、配送) は独自のスケジュールでそれらをサブスクライブして処理します。
信頼性の高いイベント配信 -- 注文イベント、支払い通知、または在庫更新を少なくとも1回の配信保証で配信します。
スケジュールされたタスク実行 -- 特定の時間、または最大40日の遅延後にダウンストリームアクションをトリガーします。たとえば、ユーザーが注文を行ってから30分後に支払いリマインダーを送信します。
分散トランザクション -- 結果整合性を提供するトランザクションメッセージを使用して、マルチサービス間操作を調整します。ローカルデータベース書き込みとメッセージ送信は、両方とも成功するか、両方ともロールバックされます。
次の図は、全体的な機能アーキテクチャを示しています。

メッセージタイプ
ApsaraMQ for RocketMQ は4つのメッセージタイプを提供します。配信と順序付けの要件に一致するタイプを選択してください。
通常メッセージ
通常メッセージは、ApsaraMQ for RocketMQ に特殊機能を持たないメッセージです。これらは、スケジュールされたメッセージ、遅延メッセージ、順序付きメッセージ、トランザクションメッセージなどの機能付きメッセージとは異なります。
スケジュールされたメッセージと遅延メッセージ
ApsaraMQ for RocketMQ は、プロデューサーが特定の時点または特定の期間後にメッセージを配信できるようにします。最大期間は40日です。
順序付きメッセージ
ApsaraMQ for RocketMQ は、コンシューマーが配信された順序でメッセージを消費できるようにします。
トランザクションメッセージ
ApsaraMQ for RocketMQ は、分散トランザクションの究極のトランザクション整合性を確保するために、X/Open XA に類似した分散トランザクション機能を提供します。
通常メッセージ
順序付けやタイミングの制約がない標準メッセージ。ログデータの転送、通知の配信、マイクロサービス呼び出しのデカップリングなど、汎用非同期通信に通常メッセージを使用します。
詳細については、「通常メッセージ」をご参照ください。
スケジュールおよび遅延メッセージ
特定のタイムスタンプ (スケジュール済み) または設定された遅延 (遅延済み) の後にメッセージを配信します。最大スケジューリングウィンドウは40日です。
典型的なシナリオ:
ユーザーが注文を行ってから30分後にリマインダーを送信します。
毎日特定の時間にバッチジョブをトリガーします。
詳細については、「スケジュールメッセージと遅延メッセージ」をご参照ください。
順序付きメッセージ
コンシューマーがメッセージを公開された正確な順序で受信することを保証します。シーケンスが重要な場合、たとえばデータベース変更イベントの処理や、各ステップが前のステップに依存する多段階ワークフローの実行には、順序付きメッセージを使用します。
詳細については、「順序メッセージ」をご参照ください。
トランザクションメッセージ
X/Open XA モデルに基づいた分散トランザクションを実装します。トランザクションメッセージは、ローカルデータベース操作とメッセージ送信を関連付けます。両方とも成功するか、両方ともロールバックされ、サービス間の結果整合性を提供します。
詳細については、「トランザクションメッセージ」をご参照ください。
メッセージタイプの比較
次の表は、メッセージタイプ間の送信モードとパフォーマンスを比較しています。
| メッセージタイプ | 信頼性の高い同期送信 | 信頼性の高い非同期送信 | 一方向送信 | マルチスレッド送信 | パフォーマンス |
|---|---|---|---|---|---|
| 通常メッセージ | はい | はい | はい | はい | 最高 |
| トランザクションメッセージ | はい | はい | はい | はい | 最高 |
| スケジュールおよび遅延メッセージ | はい | はい | はい | はい | 最高 |
| パーティション順序付きメッセージ | はい | いいえ | いいえ | いいえ | 高 |
配信と信頼性
少なくとも1回の配信
すべてのメッセージは少なくとも1回配信されます。ApsaraMQ for RocketMQ は分散アーキテクチャを使用しているため、コンシューマーの再起動やネットワーク中断の後など、重複配信が発生する可能性があります。同じメッセージを2回処理してもデータの不整合が発生しないように、ご利用のコンシューマーロジックをべき等に設計してください。
ベストプラクティスについては、「メッセージのべき等性」をご参照ください。
メッセージリトライ
コンシューマーがメッセージの処理に失敗し、リトライ応答を返した場合、ApsaraMQ for RocketMQ は設定されたリトライポリシーに基づいてメッセージを再配信します。
詳細については、「メッセージリトライ」をご参照ください。
デッドレターキュー
すべてのリトライ試行を使い果たしたメッセージは、デッドレターキューに移動されます。これらのメッセージは、通常のメッセージフローに影響を与えることなく、後で検査および再処理できます。
詳細については、「デッドレターキュー」をご参照ください。
メッセージフィルタリング
公開時にメッセージにタグまたは属性を割り当て、コンシューマーグループにフィルター条件を設定します。ブローカーは各メッセージをフィルターに対して評価し、一致するメッセージのみを配信することで、不要なネットワークトラフィックと処理オーバーヘッドを削減します。
詳細については、「メッセージフィルタリング」をご参照ください。
消費モデル
クラスタリング消費
クラスタリングモードでは、メッセージはコンシューマーグループ内の1つのコンシューマーによってのみ処理される必要があります。このモードは、各メッセージを1回だけ処理する必要があるロードバランスされたワークロードに使用します。
ブロードキャスト消費
ブロードキャストモードでは、グループ内のすべてのコンシューマーが各メッセージのコピーを受信し、各メッセージが各コンシューマーによって少なくとも1回消費されることを保証します。このモードは、キャッシュ無効化や構成更新など、すべてのインスタンスが同じデータを必要とする場合に使用します。
両方のモードの詳細については、「クラスタリング消費とブロードキャスト消費」をご参照ください。
コンシューマーオフセットのリセット
コンシューマーオフセットをリセットして、蓄積されたメッセージをスキップ (最大オフセットに移動) するか、履歴メッセージを再処理 (以前の時点に移動) します。
詳細については、「コンシューマーオフセットのリセット」をご参照ください。
アクセスプロトコル
ApsaraMQ for RocketMQ は2つのアクセスプロトコルをサポートしています。パフォーマンス要件とネットワーク環境に基づいて選択してください。
| プロトコル | 利点 | サポートされている言語 |
|---|---|---|
| TCP | HTTPベースのアクセスよりも特化され、信頼性が高く、安定しています。 | Java, C, C++, .NET |
| HTTP | 使いやすく、強力なクロスネットワークアクセス機能を提供する RESTful API です。 | Java, C++, .NET, Go, Python, Node.js, PHP |
TCP SDK の詳細については、「TCP SDK リリースノート」をご参照ください。HTTP の使用については、「HTTP アクセス」をご参照ください。
ご利用のアプリケーションを Alibaba Cloud Elastic Compute Service (ECS) インスタンス、独自のインフラストラクチャ、モバイルデバイス、または IoT デバイスにデプロイして、ApsaraMQ for RocketMQ に接続し、メッセージを送受信できます。ローカル開発者は、インターネット経由で ApsaraMQ for RocketMQ にアクセスすることもできます。
可観測性
メッセージクエリ
メッセージ ID、メッセージキー、またはトピックで特定のメッセージを検索します。メッセージクエリを使用して、配信ステータスを確認したり、処理の問題をデバッグしたりします。
詳細については、「メッセージのクエリ」をご参照ください。
メッセージトレース
プロデューサーからブローカー、コンシューマーへのメッセージの完全なパスを追跡します。メッセージトレースは、配信パイプラインで障害や遅延が発生する場所を特定するのに役立ちます。
詳細については、「メッセージトレースのクエリ」をご参照ください。
ダッシュボード
インスタンス、トピック、またはグループごとに、生産、消費、および蓄積メトリックを表示します。ダッシュボードは、ご利用の環境全体におけるメッセージングの健全性の統合ビューを提供します。
詳細については、「ダッシュボード」をご参照ください。
モニタリングとアラート
コンシューマーグループメトリックにアラートを設定して、消費遅延や障害を検出します。メッセージ蓄積がしきい値を超過したときに通知を受信するため、ダウンストリームサービスに影響を与える前に問題に対処できます。
詳細については、「モニタリングとアラート」をご参照ください。
管理ツール
Web コンソール
ブラウザベースのコンソールを通じて、トピック、グループ、およびインスタンスを管理します。このコンソールは、メッセージクエリ、メッセージトレースの検索、およびモニタリング構成もサポートしています。
詳細については、「ユーザーガイド」をご参照ください。
OpenAPI
OpenAPI を使用して、ApsaraMQ for RocketMQ の管理操作を独自のツールまたは自動化パイプラインに統合します。
詳細については、「API リファレンス」をご参照ください。