ApsaraMQ for RocketMQ は、メッセージ ID、メッセージキー、トピックによる 3 種類のメッセージクエリメソッドを提供します。メッセージクエリ機能を使用すると、メッセージが正常に送信されたことの確認、内容のチェック、メッセージトレースの表示ができます。
クエリメソッド
デフォルトでは、ApsaraMQ for RocketMQ のメッセージは 3 日間保存されます。つまり、過去 3 日間のメッセージのみをクエリできます。たとえば、現在時刻が 2019 年 6 月 10 日 15:09:48 の場合、トピック内でクエリできる最も古いメッセージは 2019 年 6 月 7 日 15:09:48 に送信されたものです。
次の表に、3 つのクエリメソッドの説明と比較を示します。
|
クエリメソッド |
クエリ条件 |
一致タイプ |
説明 |
|
メッセージ ID 別 |
トピック + メッセージ ID |
完全一致 |
トピックとメッセージ ID に基づいて特定のメッセージを検索し、そのプロパティを取得します。 |
|
メッセージキー別 |
トピック + メッセージキー |
あいまい一致 |
指定されたトピックとメッセージキーに一致する最新のメッセージを最大 64 件検索します。 重要
プロデューサーは各メッセージに一意のキーを割り当てる必要があります。64 件を超えるメッセージが同じキーを共有している場合、一部のメッセージがクエリ結果に返されないことがあります。 |
|
トピック別 |
トピック + 時間範囲 |
範囲一致 |
指定された時間範囲内にトピック内のすべてのメッセージを取得します。このメソッドは大量のメッセージを返す可能性があるため、特定のメッセージを見つけるのが困難になる場合があります。 |
推奨されるクエリプロセス
メッセージをクエリするには、次のプロセスに従うことを推奨します。

操作手順
-
ApsaraMQ for RocketMQ コンソールにログインします。左側のナビゲーションウィンドウで、インスタンスリスト をクリックします。
-
上部のナビゲーションバーで、中国 (杭州) などのリージョンを選択します。
-
インスタンス数 ページで、ターゲットインスタンスを見つけます。操作 列で 詳細 をクリックし、ドロップダウンリストから メッセージ検索 を選択します。
-
メッセージ検索 ページで、クエリメソッドを選択し、必要な情報を入力してから 検索 をクリックします。
-
Message ID から検索
特定のメッセージの完全一致クエリを実行するには、そのトピックとメッセージ ID を入力します。送信成功後にメッセージ ID をログに記録しておくと、トラブルシューティングが簡単になります。
次のコードは、Java SDK を使用してメッセージ ID を取得する方法を示しています。
SendResult sendResult = producer.send(msg); String msgId = sendResult.getMessageId();他の言語については、「SDK リファレンスの概要」をご参照ください。
-
Message Key から検索
ApsaraMQ for RocketMQ は、設定したメッセージキーに基づいてメッセージのインデックスを作成します。キーを使用してメッセージを検索すると、ApsaraMQ for RocketMQ はインデックスを使用して一致するメッセージを検索して返します。
重要-
このクエリメソッドを使用するには、メッセージの送信時にメッセージキーを設定する必要があります。
-
メッセージキーによるクエリでは、一致する最新の 64 件のメッセージのみが返されます。一意でビジネス上区別できるキーを使用してください。
次のコードは、メッセージキーを設定する方法を示しています。
Message msg = new Message("Topic","*","Hello MQ".getBytes()); /** * メッセージ取得のための一意のビジネスキーを設定します。グローバルに一意なキーを推奨します。 * これにより、メッセージの受信に失敗した場合に ApsaraMQ for RocketMQ コンソールでメッセージをクエリできます。 * キーを設定しなくてもメッセージの送受信に影響はありませんが、キーベースのクエリは機能しません。 */ msg.setKey("TestKey"+System.currentTimeMillis()); -
-
トピックから検索
このメソッドは、メッセージ ID またはメッセージキーがわからない場合に使用します。トピックと時間範囲を指定して、その期間に送信されたすべてのメッセージを取得します。
重要トピックでメッセージをクエリする場合:
-
この範囲一致では、多数のメッセージが返される可能性があります。結果を制限するために、時間範囲をできるだけ狭めてください。
-
クエリは大量のメッセージを返す可能性があるため、結果はページ分割されます。
-
-
クエリ結果
クエリされたメッセージは、コンソールの メッセージ検索 ページで表示できます。結果には、メッセージ ID、タグ、キー、生成時間、保存時間が含まれます。また、「メッセージトレースのクエリ」、消費検証の実行、メッセージのダウンロードも可能です。
消費検証
ApsaraMQ for RocketMQ は、消費検証機能を提供します。この機能を使用すると、特定のメッセージをオンラインのクライアントにプッシュして、その消費ロジックをテストし、結果を検証できます。
消費検証は、クライアントロジックのテストツールにすぎません。通常のメッセージ配信に影響を与えたり、メッセージの消費ステータスを変更したりすることはありません。
消費検証ダイアログボックスで、グループ ID と クライアント ID を選択し、[OK] をクリックします。消費検証により、メッセージの再配信が発生する場合があります。
参考
クエリ結果からメッセージトレースを表示して、その消費ステータスと結果を確認できます。詳細については、「メッセージトレースのクエリ」をご参照ください。