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> ...
アドレスのデフォルト以外の配信不能ポリシーを設定するには、アドレスの <address-setting>
に <dead-letter-address>
と <expiry-address>
を追加し、使用する DLQ と有効期限キューを指定します。
AMQ 6 とは異なり、AMQ Broker 7 では、DLQ に送信されるメッセージに有効期限を設定できません。さらに、永続メッセージと非永続メッセージの両方が、アドレスの <dead-letter-address>
で指定された DLQ に送信されます。