2016-05-30 10 views
1

各ラウンドで "basicGet"を実行する複数の同時RabbitMQコンシューマを実行します。単一の消費者がほとんどのメッセージを受け取ることがわかります。すべての消費者にメッセージをより均等に広める方法はありますか?基本的には、RabbitMQを何らかの形で中断して、最初のコンシューマにサービスを提供し、次のラインに切り替えることができます。注:私たちはメッセージ(basicGet)をプルしなければならず、プッシュ(basicConsume)に切り替えることはできません。1つのRabbitMQキューからの同時実行

+1

が ''プッシュする私が読んだ最も悲しいものの一つを(basicConsume)を切り替えることができないあなたは、キュー内の複数のメッセージを持っていると仮定今日:) – cantSleepNow

答えて

0

消費者のプリフェッチ制限を1に設定し、消費者をnoAck:falseモードにします。これは一度に1つのメッセージを取得し、手動でメッセージを確認応答する必要がへのあなたの消費者を強制的に虚偽、代わりにノアックの...

...それはAUTOACKかもしれません。代わりにこれら二つのものと

、より均等に複数の消費者全体に配布してくださいあなたのメッセージ -

+0

ありがとうございます。それはまさに私が探していた方向(RabbitMQインターフェイス設定)です。プリフェッチはbasicGetに関連しているとは思えません。基本的なものです。今私はそれが役立つかどうかを確認するためにbasicGetのための "手動" ackを試す必要があります。ありがとうございました。 – Ken

+0

basicGetは一度に1つのメッセージしか取得しないので、プリフェッチについてはあなたが正しいと思います。 :) –

関連する問題