gpt4 book ai didi

python - Rabbitmq 一个队列多个消费者

转载 作者:行者123 更新时间:2023-12-01 03:42:37 26 4
gpt4 key购买 nike

我有多个消费者轮询同一个队列,并每 X 秒检查一次队列,基本上在 X 秒后,可能至少有两个消费者可以启动 basic.get就在同一时间。

问题是:
1.是否至少有两个消费者同时可以得到同一条消息?

2.据我了解仅basic_ack将从队列中删除一条消息,所以假设我们有以下场景:

Consumer1在到达 basic_ack 之前使用 basic.get 获取消息行,Consumer2也收到此消息( basic.get ),现在 Consumer1达到basic.ack ,只有现在Consumer2达到自己的basic.ack .
当 Consumer2 达到其 basic.ack 时会发生什么?
由于操作不是原子的,消息也会由 Consumer2 处理吗?

我使用python pika的consumer的代码逻辑如下:

while true:
m_frame =None
while(m_frame is None):<br/>
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

所以我不知道这种用法是否包含循环获取

最佳答案

1.If at least two consumers at the same time can get the same message?

否 - 一条消息只会传递给一个消费者。

因此,您的场景 #2 根本不起作用。

您永远不会有 2 个使用者处理同一条消息,除非您将消息nack回队列,但仍然继续处理它。

关于python - Rabbitmq 一个队列多个消费者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39337821/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com