2017-12-05 17 views
0

ActiveMQキューにメッセージが蓄積される可能性のあるユースケースがあります。目標はより高い優先度を持ち、より新しいメッセージが最初に実行されることです。ある時間よりも古い高優先度メッセージは、より低い優先度で実行する必要があります。ActiveMQは、期限切れのメッセージを失敗したメッセージとは異なるキューに移動します。

私が読んだところでは、JMSセレクターはNOW()の概念をサポートしていません。 (すなわち)

JMSTimestamp < NOW() - 30 MINUTES 

私は、有効期限を使用するための提案を読んだ。 redelivery policyの私の理解から、期限切れのメッセージは失敗したメッセージと同じキューに行きます。期限切れのメッセージを別のキュー(queue.A)に移動してから失敗したメッセージ(DLQ)に移動する方法はありますか?

ありがとうございました。

答えて

2

ActiveMQ 5.xでは、標準的なブローカ設定オプションのセットを使用してこれを行う方法はありません。つまり、期限切れのメッセージを傍受して他の場所から送信することで、これらの行に沿って何かを行う独自のBrokerPluginを書くことができるという。

ActiveMQ Artemisを使用している場合は、あなたが望むように設定することで非常に簡単に行うことができます。Failed DeliveryExpiryアドレス構成では、このシナリオを処理できます。

関連する問題