7.2.6. デッドレターポリシー設定プロパティー
AMQ Broker 7 は、AMQ 6 とは大きく異なる方法で配信不可能なメッセージと期限切れのメッセージを処理します。デッドレターポリシーはアドレスに適用され (宛先ではなく)、デッドレターの宛先および有効期限の宛先は独立して (単一のデッドレターキューではなく)、デッドレターポリシー設定は大幅に異なります。
AMQ 6 でのデッドレターポリシー
AMQ 6 では、期限切れまたは配信不可能なメッセージは、各メッセージの宛先に設定された デッドレターキュー (DLQ) に送信されます。宛先に DLQ を設定するには、以下のデッドレターポリシーのいずれかを使用します。
sharedDeadLetterStrategy-
宛先の配信不可能なメッセージは、
ActiveMQ.DLQと呼ばれる共有のデフォルト DLQ に送信されます。 individualDeadLetterStrategy- 宛先の配信不可能なメッセージは、この宛先の専用の DLQ に送信されます。
discardingDeadLetterStrategy- 宛先の配信不可能なメッセージは破棄されます。
宛先のデッドレターポリシー内で、以下の設定プロパティーを追加して、宛先の DLQ に送信される必要があるメッセージの種類を制御できます。
| AMQ 6 の設定プロパティー | 説明 |
|---|---|
|
|
非永続的なメッセージを宛先の DLQ に送信すべきかどうか。デフォルトは |
|
|
期限切れのメッセージを宛先の DLQ に送信すべきかどうか。デフォルトは |
|
| 期限切れを宛先の DLQ に送信されたメッセージに適用すべきかどうか。デフォルトは 0 です。 |
AMQ 7 でのデッドレターポリシー
AMQ Broker 7 では、配信不可能なメッセージは該当する デッドレターアドレス に送信され、期限切れのメッセージは該当する 期限切れアドレス に送信されます 。
broker.xml 設定ファイルでは、デフォルトのアドレス設定でデッドレターアドレスと期限切れアドレスを指定します。配信不可能および期限切れメッセージは、これらの設定によって指定された宛先に送信されます。
...
<address-settings>
<address-setting match="#">
<dead-letter-address>DLQ</dead-letter-address>
<expiry-address>ExpiryQueue</expiry-address>
...
</address-setting>
...
</address-settings>
...
デフォルトでは、デッドレターと期限切れアドレスは、<addresses> セクションで定義される DLQ および ExpiryQueue 宛先を指定します。
...
<addresses>
<address name="DLQ">
<anycast>
<queue name="DLQ" />
</anycast>
</address>
<address name="ExpiryQueue">
<anycast>
<queue name="ExpiryQueue" />
</anycast>
</address>
...
</addresses>
...
アドレスにデフォルト以外のデッドレターポリシーを設定するには、<dead-letter-address> および <expiry-address> をアドレスの <address-setting> に追加し、使用する DLQ と期限切れキューを指定します。
AMQ 6 とは異なり、AMQ Broker 7 では DLQ に送信されるメッセージの有効期限を設定することはできません。また、永続メッセージと非永続メッセージは、どちらもアドレスの <dead-letter-address> で指定された DLQ に送信されます。