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 に送信されます。