2016-11-16 19 views
0

メッセージを消費するキューが2つあり、それに1つのSimpleMessageQueueListenerContainerを使用すると、両方のキューにメッセージがあるときにリスナーが呼び出される/Rabbitmq:複数のキューからメッセージを消費することの優先順位付け

私は私が働いている問題のより具体的なことをしようとします:

私は2つのキューからメッセージを消費する必要があるコンシューマ・アプリケーションを持っている - と言う正規雇用キューとまれ-ジョブキュー。 '頻繁なジョブキュー'にメッセージがある場合は、それらを消費してから、「通常のジョブキュー」からメッセージを消費します。これらを組み合わせてすべてのメッセージを1つのrabbitmqレベルの優先度キューに入れることはできないかもしれませんし、まれなジョブや他のものに影響を与えることなく通常のジョブをパージするような今後のユースケースのために、

私は、RabbitMQが消費者の優先順位をサポートしていることを認識していますが、ここに該当するかどうかはわかりません。私は、消費者アプリケーションのすべてのインスタンスが、あまり頻繁ではないジョブキューのメッセージを最初に消費し、これらの消費者の間で優先順位を付けないようにしたいと考えています。

キューあたり専用のコンシューマスレッドが2つあり、rabbitmqキューから消費されたときにメッセージを入れることができる内部優先順位キューのデータ構造が必要です。

本当にありがとうございます。ありがとう。

〜Rashida

答えて

0

あなたは何もできません。メッセージは同じ優先順位で配信されます。

メモリ内のキューに移動すると、メッセージが失われる可能性があります。

メッセージドリブンコンテナの代わりにRabbitTemplate.receive()またはreceiveAndConvert()のいずれかのメソッドを使用することを検討してください。

あなたは完全にコントロールできます。

+0

これはコールバックベースのアプローチからポーリングベースに移行する必要があります。私はそれを試すことができるかどうかを確認します。ありがとう。 – Rashida

関連する問題