RocketMQ for ApsaraMQ は、分散アーキテクチャに基づいて構築されたビジネスにおける非同期デカップリングのための主要なサービスです。RocketMQ for ApsaraMQ が提供するトレースデータは、ビジネスのアップストリームアプリケーションとダウンストリームアプリケーションを効果的に接続します。これにより、例外を特定してトラブルシューティングできます。このトピックでは、メッセージトレースが適用可能なシナリオと RocketMQ for ApsaraMQ が提供するトレースパラメーターについて説明します。また、メッセージトレースを表示する方法についても説明します。
一般的なシナリオ
メッセージングの重要なデータは、RocketMQ for ApsaraMQ のトレースパラメーターとして定義されます。RocketMQ for ApsaraMQ は、クエリと分析結果をチャートで表示する可視化機能を提供します。メッセージトレースをクエリすることで、ビジネスのステータスをすばやく取得し、例外を特定できます。
以下の項目では、メッセージトレースが使用される典型的なシナリオについて説明します。
シナリオ 1:メッセージが送信されたか、使用されたかを確認します。
シナリオ 2:スケジュールされたメッセージまたは遅延メッセージがスケジュールされた時間に配信されたかどうかを確認します。
シナリオ 3:トランザクションメッセージがコミットされたかロールバックされたかを確認します。
シナリオ 4:トラブルシューティングのために、プロデューサーとコンシューマーの ID 情報とマシン情報を確認します。
トレースパラメーター
次の表に、RocketMQ for ApsaraMQ のトレースパラメーターを示します。
カテゴリ | パラメーター | 説明 |
プロデューサー | プロデューサー情報 | プロデューサーがメッセージの送信に使用した RocketMQ for ApsaraMQ アカウントまたは AccessKey ID。 |
ホスト名 | プロデューサークライアントが存在するマシンのホスト名。 | |
送信日時 | プロデューサーがメッセージの送信を開始した日時。 | |
到着日時 | メッセージが RocketMQ for ApsaraMQ ブローカーに格納された日時。 | |
送信結果 | メッセージ送信の結果。有効な値:
| |
基本的なメッセージ情報 | メッセージタイプ | |
メッセージ ID | RocketMQ for ApsaraMQ によって自動的に生成される、メッセージのグローバルに一意な識別子。 | |
トピック | メッセージが属するトピックの名前。 | |
メッセージキー | メッセージキー。メッセージのキーは、ビジネスロジックを一意に識別するためにプロデューサーによって設定されるビジネス識別子。 | |
メッセージタグ | メッセージタグ。タグは、特定のトピック内のメッセージの使用タイプを指定するために使用されます。 | |
順序メッセージ | メッセージグループ | メッセージが属するグループ。順序メッセージが属するグループは、プロデューサーによって指定されます。同じグループ内のメッセージは、先入れ先出し(FIFO)の順序で処理されます。 |
トランザクションメッセージ | コールバック確認時間 | ハーフメッセージのトランザクションステータスが確認されたときのコールバック時間。 |
コミット日時 | トランザクションメッセージがブローカーによってコンシューマーにコミットされた日時。 | |
ロールバック日時 | トランザクションメッセージがロールバックされた日時。 | |
スケジュールメッセージ | プリセット遅延時間 | メッセージが送信されるようにスケジュールされた時間。 |
コンシューマー | 使用結果 | メッセージの使用結果。有効な値:
|
コンシューマー情報 | コンシューマーがメッセージのサブスクライブに使用した RocketMQ for ApsaraMQ アカウントまたは AccessKey ID。 | |
ホスト名 | コンシューマークライアントが存在するマシンのホスト名。 | |
順序配信 | コンシューマーが属するコンシューマーグループに対して順序配信が有効になっているかどうかを示します。 | |
配信時間 | RocketMQ for ApsaraMQ ブローカーがコンシューマーにメッセージを配信した日時。 | |
応答時間 | RocketMQ for ApsaraMQ ブローカーがコンシューマーから返された使用結果を受信した日時。 | |
非表示期間 | シンプルコンシューマーによって送信されたメッセージが表示されなかった期間。詳細については、「シンプルモードで使用されるメッセージの再試行ポリシー」をご参照ください。 | |
非表示期間の変更 | シンプルコンシューマーが ChangeInvisibleDuration 操作を呼び出した日時。 | |
デッドレターキューへの登録日時 | メッセージが使用できなかった場合に、メッセージがデッドレターキューに配信された日時。 |
制限
デフォルトでは、Apache RocketMQ 3.x または 4.x SDK を使用するクライアントでは、メッセージトレース機能は無効になっています。詳細については、「概要」をご参照ください。このようなクライアントを使用していて、RocketMQ for ApsaraMQ コンソールでメッセージトレースをクエリする場合は、メッセージングコードでメッセージトレース機能を有効にする必要があります。メッセージングコードの詳細な構成を以下に示します。
プロデューサー
producer.setAccessChannel(AccessChannel.CLOUD);コンシューマー
consumer.setAccessChannel(AccessChannel.CLOUD);
課金ルール
サブスクリプションおよび従量課金の RocketMQ for ApsaraMQ インスタンスの場合、メッセージトレース機能はデフォルトで有効になっており、無料です。
サーバーレス RocketMQ for ApsaraMQ インスタンスの場合、メッセージトレース機能を手動で有効または無効にすることができます。詳細については、「サーバーレスインスタンスのメッセージトレース機能を有効または無効にする」をご参照ください。
サーバーレス RocketMQ for ApsaraMQ インスタンスのメッセージトレース機能を有効にすると、生成されたメッセージトレースの数に基づいてメッセージトレース料金が課金されます。詳細については、「メッセージトレース料金」をご参照ください。
保存期間
サブスクリプションおよび従量課金の RocketMQ for ApsaraMQ インスタンスの場合、メッセージトレースは 3 日間保持できます。
サーバーレス RocketMQ for ApsaraMQ インスタンスの場合、メッセージトレースは 14 日間保持できます。
クエリメソッド
RocketMQ for ApsaraMQ では、次のいずれかの方法を使用してメッセージトレースをクエリできます。
メッセージ ID によるクエリ:この方法は、完全に一致し、高速であるため推奨されます。
メッセージキーによるクエリ:この方法はあいまい検索です。この方法を使用する場合、一度に最大 1,000 件のメッセージトレースをクエリできます。クエリするメッセージのキーがわかっているが、メッセージの ID がわからない場合は、この方法を使用できます。
トピックによるクエリ:この方法は範囲クエリです。メッセージ ID やメッセージキーが記録されておらず、メッセージの数が少ないシナリオに適しています。このクエリメソッドは使用しないことをお勧めします。ほとんどの場合、特定の期間内にトピックに多数のメッセージが生成されます。この方法を使用すると、クエリされたメッセージの中から特定のメッセージを識別することはほとんどできません。
サーバーレスインスタンスのメッセージトレース機能を有効または無効にする
サーバーレス RocketMQ for ApsaraMQ インスタンスのメッセージトレース機能を無効にすると、インスタンスのメッセージトレースを保存またはクエリできなくなり、RocketMQ for ApsaraMQ コンソールにメッセージトレースのエントリポイントが表示されなくなります。
サーバーレス RocketMQ for ApsaraMQ インスタンスのメッセージトレース機能を有効にすると、メッセージトレースの料金が発生します。詳細については、「メッセージトレース料金」をご参照ください。
RocketMQ for ApsaraMQ コンソール にログオンします。左側のナビゲーションウィンドウで、インスタンス数 をクリックします。
上部のナビゲーションバーで、中国 (杭州) などのリージョンを選択します。[インスタンス] ページで、管理するインスタンスの名前をクリックします。
インスタンスの詳細 ページで、基本情報 タブをクリックします。メッセージトレース カードで、有効にする または 無効にする をクリックします。
表示されるメッセージで、確定 をクリックします。
メッセージトレースをクエリする
RocketMQ for ApsaraMQ コンソール にログオンします。左側のナビゲーションウィンドウで、インスタンス数 をクリックします。
上部のナビゲーションバーで、中国 (杭州) などのリージョンを選択します。[インスタンス] ページで、管理するインスタンスの名前をクリックします。
左側のナビゲーションウィンドウで、メッセージトレース をクリックします。メッセージトレース ページで、クエリメソッドを選択し、クエリ条件を入力して、[検索] をクリックします。

クエリ結果で、[操作] 列の [メッセージトレース] をクリックします。表示されるパネルで、メッセージトレースに関する情報を表示します。

メッセージが使用されている場合は、[コンシューマー] カードのグループ ID をクリックして、使用の詳細を表示します。パネルの左上で、[イメージのエクスポート] をクリックして、メッセージトレースの詳細を説明するイメージを生成します。

関連 API 操作
次の API 操作を呼び出して、メッセージトレースを管理することもできます。