4.20. 配信されていないメッセージを dead letter アドレスへ移行
クライアントにメッセージの配信に失敗した場合は、ブローカーがメッセージの配信を継続しようとしない場合があります。無限配信を試行するのを防ぐために、dead letter address と 1 つ以上の dead letter queuesを定義できます。指定の数の配信試行後、ブローカーは元のキューから未配信メッセージを削除し、そのメッセージを設定済みの dead letter アドレスに送信します。システム管理者は、デッド文字キューから未配信メッセージを後で消費してメッセージを検査できます。
指定のキューに dead letter アドレスを設定しない場合、ブローカーは指定された数の配信試行後にキューから未配信メッセージを完全に削除します。
dead letter キューから消費される配信されていないメッセージには、以下のプロパティーがあります。
_AMQ_ORIG_ADDRESS
- メッセージの元のアドレスを指定する string プロパティー
_AMQ_ORIG_QUEUE
- メッセージの元のキューを指定する string プロパティー
4.20.1. dead letter アドレスの設定
以下の手順は、dead letter アドレスと関連する dead letter キューを設定する方法を説明します。
手順
-
<broker_instance_dir>/etc/broker.xml
設定ファイルを開きます。 キュー名と一致する
<address-setting>
要素で、dead letter のアドレス名と配信試行回数の最大値を設定します。以下に例を示します。<configuration ...> <core ...> ... <address-settings> ... <address-setting match="exampleQueue"> <dead-letter-address>DLA</dead-letter-address> <max-delivery-attempts>3</max-delivery-attempts> </address-setting> ... <address-settings> <configuration ...>
dead-letter-address
dead letter アドレスの名前。この例では、ブローカーは未配信メッセージをキュー exampleQueue から dead letter address(DLA) に移動します。
注記<address-setting>
要素のmatch
属性には、ワイルドカード式を指定できます。ワイルドカード式を使用すると、<address-setting>
要素に設定された dead letter 設定を一致する一連のアドレスに関連付ける場合に便利です。max-delivery-attempts
-
配信不能メッセージを設定済みの dead letter アドレスに移動するまでの、ブローカーによる配信試行の最大数。この例では、ブローカーは配信に失敗した 3 回失敗した後、未配信メッセージを dead letter address に移動します。デフォルト値は
10
です。ブローカーが再配信の試行を無限にするには、-1
の値を指定します。
addresses
セクションに、dead letter アドレス (DLA) のaddress
要素を追加します。dead letter キューを dead letter アドレスに関連付けるには、queue
の名前を指定します。以下に例を示します。<configuration ...> <core ...> ... <addresses> <address name="DLA"> <anycast> <queue name="DLQ" /> </anycast> </address> ... </addresses> </core> </configuration>
上記の設定では、DLQ という名前の dead letter キューを dead letter アドレス (DLA) に関連付けます。
関連情報
- アドレス設定でワイルドカードを使用する方法の詳細は、AMQ Broker ワイルドカード構文 を参照してください。