すべてのプロダクト
Search
ドキュメントセンター

ApsaraMQ for RocketMQ:デッドレターのキュー

最終更新日:Jul 10, 2024

ApsaraMQ for RocketMQ内のメッセージが再試行の最大数に達してもまだ消費されない場合、メッセージはデットレターメッセージになり、デットレターキューに転送されます。 問題をトラブルシューティングした後、無効なメッセージを再送信して消費することができます。 無効メッセージを処理できない場合は、メッセージをエクスポートして保存し、有効期限が切れた後に削除されないようにすることができます。

背景情報

メッセージの使用に失敗した場合、ApsaraMQ for RocketMQは自動的にメッセージを再試行します。 再試行の最大数に達してもメッセージがまだ消費されない場合、コンシューマーは期待どおりにメッセージを消費できません。 この場合、ApsaraMQ for RocketMQは、コンシューマー用に指定された特別なキューにメッセージを送信します。 詳細については、「メッセージの再試行」をご参照ください。

ApsaraMQ for RocketMQでは、期待どおりに消費できないメッセージは無効メッセージと呼ばれます。 デットレターメッセージを格納するために使用されるキューは、デットレターキューと呼ばれます。

特徴

デッドレターのメッセージには、次の特徴があります。

  • デッドレターメッセージは、消費者の期待どおりに消費できなくなりました。

  • デフォルトでは、無効メッセージの有効期間は3日です。これは、通常のメッセージの有効期間と同じです。 失効したメッセージは自動的に削除されます。 デットレターメッセージが生成されてから3日以内に処理することを推奨します。

デッドレターキューには、次の特徴があります。

  • 各デットレターキューは、コンシューマインスタンスではなくコンシューマグループに対応します。

  • コンシューマーグループで着信履歴メッセージが生成されない場合、ApsaraMQ for RocketMQはコンシューマーグループの着信履歴キューを作成しません。

  • デットレターキューには、メッセージが属するトピックに関係なく、対応するグループで生成されたすべてのデットレターメッセージが含まれます。

ApsaraMQ for RocketMQコンソールで、送信できないメッセージを照会、エクスポート、再送信できます。

デッドレターメッセージをクエリするメソッド

次の表に、ApsaraMQ for RocketMQで未送信のメッセージをクエリするために使用できる方法を示します。

移動方法

条件

データ型

説明

グループIDによる

グループID + 時間範囲

レンジマッチ

グループIDと時間範囲を指定して、条件を満たすすべてのメッセージをバッチで取得できます。 このクエリメソッドでは、ファジーマッチを使用して多数のメッセージをクエリできます。

メッセージID

グループID + メッセージID

完全一致

グループIDとメッセージIDを指定して、完全一致を使用してメッセージを検索できます。

デッドレターメッセージの照会

  1. ApsaraMQ for RocketMQコンソールにログインします。 左側のナビゲーションウィンドウで、インスタンス数 をクリックします。

  2. 上部のナビゲーションバーで、中国 (杭州) などのリージョンを選択します。 [インスタンス] ページで、管理するインスタンスの名前をクリックします。

  3. 左側のナビゲーションウィンドウで、デッドレターキュー をクリックします。 デッドレターキュー ページで、次のいずれかの方法を使用してデッドレターメッセージを照会します。

    • グループから検索

      グループIDと、デッドメッセージが生成される時間範囲を指定できます。 次に、条件を満たすすべてのメッセージを照会します。

      説明

      デットレターメッセージの生成時刻は、メッセージに対して指定された再試行の最大数に達した後にメッセージがデットレターキューに送信される時刻を指します。

    • Message ID から検索

      メッセージIDでメッセージを照会する場合、完全一致が使用されます。 グループIDとメッセージIDを指定して、完全一致を使用してクエリするメッセージを検索できます。

デッドレターメッセージのエクスポート

無効メッセージを処理できない場合は、ApsaraMQ for RocketMQコンソールでメッセージをエクスポートして、有効期限が切れた後にメッセージが削除されないようにすることができます。

ApsaraMQ for RocketMQコンソールでは、一度に1つの着信メッセージまたは複数の着信メッセージをエクスポートできます。 エクスポートされたファイルはCSV形式です。

次の表に、書き出された定型文メッセージのフィールドを示します。

項目

説明

instanceId

ApsaraMQ for RocketMQインスタンスのID。

topic

メッセージが属するトピック。

msgId

メッセージ ID

bornHost

メッセージを生成したプロデューサーのURL。

bornTimestamp

メッセージがいつ生成されたかを示すタイムスタンプ。

storeTimestamp

メッセージがApsaraMQ for RocketMQブローカーに保存されたタイミングを示すタイムスタンプ。

reconsumeTimes

消費の失敗の数。

properties

JSON形式のメッセージ属性。

body

Base64でエンコードされているメッセージ本文。

bodyCRC

メッセージボディCRC (Cyclic Redundancy Check) 。

  • 単一のデッドレターメッセージをエクスポートする

    ApsaraMQ for RocketMQコンソールで、照会した無効文字メッセージを見つけ、[操作] 列の 詳細 をクリックします。 次に、ドロップダウンリストから メッセージのエクスポート を選択して、無効メッセージをエクスポートします。

  • 一度に複数のデットレターメッセージをエクスポートする

    ApsaraMQ for RocketMQコンソールで、グループIDで照会した無効メッセージを選択し、メッセージの一括エクスポート をクリックして無効メッセージをエクスポートします。

死んだ手紙のメッセージを再送する

期待どおりに消費できないメッセージのみが、デットレターキューに転送されます。 デッドレターメッセージには特別な処理が必要です。 問題のトラブルシューティングを行った後、ApsaraMQ for RocketMQコンソールで使用するために無効メッセージを再送信できます。

重要
  • 順序付けられたメッセージがデットレターキューに送信された場合、メッセージを再送信することはできません。 デットレターキューからメッセージをエクスポートし、メッセージを処理する必要があります。

  • デットレターメッセージが消費のために再送信された後、メッセージは、特定の期間の間、デットレターキューに格納される。 有効期間が経過すると、システムは自動的にメッセージを削除します。

  • 単一のデッドレターメッセージを再送信する

    ApsaraMQ for RocketMQコンソールで、照会した無効文字メッセージを見つけ、[操作] 列の 詳細 をクリックします。 次に、ドロップダウンリストから 再送信 を選択して、無効文字メッセージを再送信します。

  • 複数のデッドレターメッセージを一度に再送信する

    ApsaraMQ for RocketMQコンソールで、グループIDで照会した未送信メッセージを選択し、メッセージの一括再送信 をクリックして未送信メッセージを再送信します。

関連ドキュメント

メッセージの再試行の動作メカニズムについては、「メッセージの再試行」をご参照ください。