同じキューでポーリングし、X秒ごとにキューをチェックする複数のコンシューマがあり、基本的にX秒後に少なくとも2人のコンシューマが同時にbasic.get
を起動できることがあります。Rabbitmq 1つのキューを複数のコンシューマ
質問:
1.同時に少なくとも2人の消費者が同じメッセージを受け取ることができますか?
Consumer1
はbasic.getとMSGを取り、それがbasic_ack
ラインに到達する前に、Consumer2
はなっている:私は唯一のbasic_ack
は、キューからメッセージを指定を削除し、私たちは次のシナリオがあるとします理解ものに2.According
このメッセージ(basic.get
)、今はConsumer1
がbasic.ack
に達し、現在はConsumer2
が自分自身のbasic.ack
に達しています。
Consumer2がbasic.ack
になるとどうなりますか?
アクションはアトミックではないため、Consumer2もメッセージを処理しますか?次のようにPythonのナキウサギを使用して、消費者の
私のコードのロジックは次のとおりです。
while true: m_frame =None while(m_frame is None):
self.connection.sleep(10) m_frame,h_frame,body = self.channel.basic_get('test_queue') self.channel.basic_ack(m_frame.delivery_tag) [Doing some long logic - couple of minutes]
ラウンドのであれば、私は知らない私は
をbasic.consume使用しないことに注意してくださいそのような使用のためにロビンフェッチが含まれています