7.2.6. デッドレターポリシーの設定プロパティー

AMQ Broker 7 は、AMQ 6 とは大きく異なる方法で、配信不能および期限切れのメッセージを処理します。デッドレターポリシーは (宛先ではなく) アドレスに適用され、(単一のデッドレターキューではなく) 個別のデッドレターと有効期限の宛先があります。デッドレターポリシーの設定は大きく異なります。

AMQ 6 の配信不能ポリシー

AMQ 6 では、期限切れまたは配信不能のメッセージは、メッセージの宛先ごとに設定された 配信不能キュー (DLQ) に送信されます。宛先の DLQ を設定するには、次のデッドレターポリシーのいずれかを使用できます。

sharedDeadLetterStrategy
宛先の配信不能メッセージは、ActiveMQ.DLQ と呼ばれる共有のデフォルト DLQ に送信されます。
individualDeadLetterStrategy
宛先の配信不能メッセージは、この宛先専用の DLQ に送信されます。
discardingDeadLetterStrategy
宛先の配信不能メッセージは破棄されます。

宛先のデッドレターポリシー内で、次の設定プロパティーを追加して、宛先の DLQ に送信する必要があるメッセージの種類を制御できます。

AMQ 6 設定プロパティー説明

processNotPersistent

非持続メッセージを宛先の DLQ に送信するかどうか。デフォルトは false です。

processExpired

期限切れのメッセージを宛先の DLQ に送信するかどうか。デフォルトは true です。

有効期限

宛先の 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> セクションで定義されている DLQExpiryQueue の宛先を指定します。

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