2016-09-11 7 views
0

私はRabbitMQ Java APIを使用しています。*.appleルーティングキーに登録されているワーカーがいます。私は、それ以上のワーカーが明示的ルーティングキーに取り組まないようにしたいと思っています。 3つのジョブキューに与え例えばRabbitMQ:特定のルーティングキーのワーカーを制限する

、:

  • orange.apple
  • green.apple
  • orange.apple

二つの労働者がorange.applegreen.appleですぐに開始しますorange.appleの承認後に新しいorange.appleワーカーが開始されます。

答えて

0

メッセージが配信されるキュー以外のルーティングキーに基づいて何かを制限することはできません。

あなたの状況では、ワーカーをキュー単位で制限する必要があります。これは、キューに接続/使用するときにコンシューマを「排他」に設定することで実現できます。

おそらく消費者プリフェッチの上限は1、偽の場合は「auto ack」を使用します。

このようにすると、キューに1つのコンシューマが存在し、一度に1つのメッセージしか処理されず、次のメッセージを受け取る前にメッセージを確認する必要があります。

+0

したがって、キューで作業者を制限し、オレンジとグリーンを同時に実行させるにはどうすればよいですか? –

+0

メッセージタイプごとに1つのキュー。 "orange.apple"キューと "green.apple"キューがあります。それぞれが構成を持つ消費者を持っています –

+0

問題は、ワイルドカード "* .apple"が必要で、その同じルーティングキーのときだけ、キューを制限したいということです。 –

関連する問題