0

私には1つのプロデューサー、1つのキュー、およびNのコンシューマーがあります。プロデューサーは、コンシューマーによって実行される「ジョブ」を作成します。消費者が前のジョブを終了するときに、消費者がキューからジョブをプルするプルモデルを使用したいのですが、ラウンドロビンを使用したプッシュモデルではなく、ジョブが消費者に等しい分数で除算されます。

私の消費者は同じコードを使用していますが、私がそれを実行すると、最初のコードが接続してすべてのジョブを受け取ります。デバッグでそれを見ても、最初のものはすべてを取得しますが、2番目のものなどはメッセージを取得しません(最初のものが受信を実行する前に受信を実行した場合でも、いくつかのジョブが返されます)。

接続URL: "amqp:// guest:guest @ prodconstest /?brokerlist ='tcp://127.0.0.1:5767'"

すべての消費者のためのコードは次のことを行います。

  1. AMQConnectionを作成します
  2. 自動ACKでキューセッションを作成します
  3. 接続開始
  4. キューを作成"ADDR:" + queueName + "; {create: always, link:{x-subscribes: {exclusive: false}}}"
  5. 消費者を作成する

AMQPキューを使用して達成することは理論的に可能ですか?もしそうなら、どのように?

4

1 に答える 1

0

maxprefetch接続URLのパラメータを変更する必要があるようです。デフォルト値5000は私のユースケースには大きすぎるため、1に変更するとこのシステムが機能します。

于 2012-12-28T14:12:52.230 に答える