带有RabbitMQ的Pika:来自单个Queu的消息分发访问多个消费者应用程序

2024-04-26 14:42:32 发布

您现在位置:Python中文网/ 问答频道 /正文

环境: Python,鼠兔,兔子。在

我有一个已经有100条消息的队列。 当两个消费者应用程序相继启动时,所有预先存在的消息都将由第一个使用者处理,而不是分布在正在启动并等待消息的两个使用者之间。在

然而,添加到队列中的任何新消息都会在两个使用者之间分发。 问题是,如果消费者花费很长时间来处理,那么在消费来自队列的初始预先存在的消息之前,加载都在一个消费者身上。在

但是,如果Consumer1被杀死,消息将被传递到Consumer2(这是预期的)

我正在使用SelectionConnect

prefetch_count=(tried both 0 and 1),
prefetch_size = 0,
no_ack = False,

有没有一种方法可以配置成这样,队列中预先存在的消息将在多个使用者之间共享,即使这些使用者将在不同的时间启动(例如,随着负载的增加,根据负载添加更多的使用者)。在

感谢任何帮助。 非常感谢。在


Tags: 应用程序消息环境队列count使用者消费者花费
1条回答
网友
1楼 · 发布于 2024-04-26 14:42:32

我可以通过移动基本的\uqos调用来修复这个问题,将prefetch count设置为1 on_channel_create call back方法。在

由于某些原因,在基本的“使用”之前将“预取”值设置为1是不够的。一定和鼠兔的io循环有关。在

相关问题 更多 >