0

RabbitMQ ワーク キューについて 2 つの質問があります。

  1. RabbitMQ チュートリアルからわかるように、基本的なキュー コンシューマー クライアント (基本的な "Hello, World!" コンシューマー) があり、同じキューに 2 つ目のコンシューマー クライアントを追加すると、RabbitMQ が自動的にディスパッチされるようです。これらの 2 つのキュー間のメッセージをラウンド ロビン方式で処理します。それは本当ですか (追加の構成を追加することなく)?

  2. 私のコンシューマー クライアントは、一度に 1 つのメッセージのみを受信するように構成されています(GetResponse response = channel.basicGet("my_queue", false)。一度に 1 つのメッセージしか受信していないchannel.basicQos(1)ため、公平なディスパッチのために prefetchCount ( ) を設定する必要がありますか?

4

1 に答える 1

2

あなたの質問への回答:

  1. はい
  2. いいえ

ただし、2つの質問1と2には互換性がありません。コンシューマーを使用している場合は、メッセージがプッシュされるように設計されており、を使用しませんBasic.Get。コンシューマーを使用する場合はBasic.QoS、コンシューマーが一度に1つの未確認メッセージのみを「所有」できることを指定するためにを使用する必要があります。RabbitMQは、QoS制限を超えて追加のメッセージをプッシュしません。

別の方法は、を使用してキューから「プル」するBasic.Getことです。一度に実行するメッセージの数まで、自分の運命を制御します。

これは意味がありますか?

于 2013-01-30T23:18:08.847 に答える