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