ApsaraMQ for RocketMQでは、メッセージID、メッセージキー、およびトピックでメッセージをクエリできます。 メッセージクエリ機能を使用して、メッセージが送信されたかどうかの確認、メッセージの内容が正しいかどうかの確認、およびメッセージトレースデータの表示を行うことができます。
照会メソッド
デフォルトでは、メッセージはApsaraMQ for RocketMQに3日間保存されます。 現在のクエリ時刻の3日前に生成されたメッセージのみをクエリできます。 たとえば、現在の時刻が2019年6月10日15:09:48の場合、トピックで2019年6月7日15:09:48から生成されたメッセージを照会できます。 デフォルトのメッセージ保存期間は変更しないことを推奨します。
次の表は、クエリメソッドを比較しています。
移動方法 | 条件 | データ型 | 説明 |
メッセージID | トピック + メッセージID | 完全一致 | トピックとメッセージIDを指定して、完全に一致するメッセージを見つけ、対応する属性を取得できます。 |
メッセージキー | トピック + メッセージキー | ファジーマッチ | トピックとメッセージキーを指定して、トピック内で指定したキーを含む最新の64メッセージを取得できます。 重要 同じキーを持つメッセージの数が64を超えないように、メッセージごとに一意のキーを指定することをお勧めします。 そうしないと、特定のメッセージがクエリで返されない場合があります。 |
トピック別 | トピック + 時間範囲 | レンジマッチ | トピック名と時間範囲を指定して、条件を満たすすべてのメッセージを取得できます。 このタイプのクエリは多数のメッセージを返します。このため、クエリするメッセージを見つけるのが難しくなります。 |
クエリメソッドを選択するための推奨プロセス
次のプロセスに基づいてクエリ方法を選択することを推奨します。
手順
ApsaraMQ for RocketMQコンソールにログインします。 左側のナビゲーションウィンドウで、インスタンスリスト をクリックします。
上部のナビゲーションバーで、中国 (杭州) などのリージョンを選択します。
インスタンス数 ページで、管理するインスタンスを見つけ、操作 列の 詳細 をクリックし、ドロップダウンリストから メッセージ検索 を選択します。
メッセージ検索 ページで、クエリ方法を選択し、画面の指示に従ってパラメーターを設定します。 続いて、検索 をクリックします。
Message ID から検索
メッセージIDでメッセージを照会する場合、完全一致が使用されます。 メッセージのトピックとIDを指定して、必要なメッセージを取得できます。 メッセージの送信時にメッセージIDをログに印刷することを推奨します。 これは問題のトラブルシューティングに役立ちます。
次の例では、SDK for Javaを使用してメッセージIDを取得する方法を示します。
SendResult sendResult = producer.send(msg); String msgId = sendResult.getMessageId();
他のプログラミング言語のSDKを使用してメッセージIDを取得する方法については、「概要」をご参照ください。
Message Key から検索
メッセージキーでメッセージをクエリする場合、ApsaraMQ for RocketMQは、指定したメッセージキーに基づいてメッセージのインデックスを作成し、条件を満たすメッセージを返します。
重要メッセージが送信される前に、照会するメッセージにキーが指定されていることを確認してください。
指定されたキーを含む最新の64メッセージのみが返されます。 したがって、メッセージごとに一意で識別可能なキーを指定することをお勧めします。
次のサンプルコードは、メッセージキーの指定方法の例を示しています。
Message msg = new Message("Topic","*","Hello MQ".getBytes()); /** * Specify a key that is used for message query for each message. The key is the primary business attribute of a message. We recommend that you specify a globally unique key for each message. * If a message is not received as expected, you can query the message in the ApsaraMQ for RocketMQ console by using the message key. A message can be sent and received even if you do not specify a key for the message. */ msg.setKey("TestKey"+System.currentTimeMillis());
トピックから検索
メッセージのIDとキーが使用できない場合は、トピックごとにメッセージを照会できます。 トピックとメッセージが送信される時間範囲を指定して、条件を満たすすべてのメッセージを取得できます。 次に、照会するメッセージを取得できます。
重要トピックでメッセージをクエリする場合は、次の項目に注意してください。
このクエリメソッドを使用すると、特定の時間範囲内にトピックで送信されたすべてのメッセージを取得できます。 クエリするメッセージを効率的に見つけるために、時間範囲を絞り込むことをお勧めします。
多数のメッセージが複数のページで返されます。
クエリの結果
クエリされたメッセージは、ApsaraMQ for RocketMQコンソールの メッセージ検索 ページで表示できます。 表示されるメッセージの情報には、メッセージID、タグ、キー、送信時刻、保存期間が含まれます。 ApsaraMQ for RocketMQコンソールで、メッセージトレースの照会、メッセージ消費の確認、メッセージのダウンロードを行うこともできます。 メッセージトレースの照会方法については、「メッセージトレースの照会」をご参照ください。
メッセージ消費の確認
ApsaraMQ for RocketMQは、メッセージ消費検証機能を提供します。 接続されているクライアントにメッセージをプッシュし、メッセージが期待どおりに消費されているかどうかを確認できます。
消費検証機能は、クライアントが期待されるロジックを使用してメッセージを消費できるかどうかを確認するためにのみ使用されます。 この機能はメッセージの受信には影響しません。 したがって、メッセージ消費状態などの情報は、メッセージ消費が検証された後も変化しない。
消費検証機能は、クライアントが期待されるロジックを使用してメッセージを消費できるかどうかを確認するためにのみ使用されます。 この機能はメッセージの受信には影響しません。 したがって、メッセージ消費状態などの情報は、メッセージ消費が検証された後も変化しない。
関連ドキュメント
メッセージのクエリ結果に基づいて、メッセージのトレース、消費ステータス、および消費結果を表示できます。 詳細については、「クエリメッセージトレース」をご参照ください。