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