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 です。

expiration

期限切れを宛先の 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 に送信されます。