RabbitMQ:从多个队列中一次只消耗一条消息

时间:2016-08-08 15:36:32

标签: python rabbitmq amqp pika

我试图在RabbitMQ中保持与多个队列的连接。每当我从其中一个队列中弹出新消息时,我都希望产生一个外部进程。

此过程将需要一些时间来处理消息,并且我不想开始处理来自该特定队列的另一条消息,直到我之前弹出的消息完成为止。如果可能的话,我不想保留进程/线程,只是等待外部进程完成并确认服务器。理想情况下,我想在这个外部进程中执行,可能会传递一些标识符,以便它可以连接到RabbitMQ并确认消息。

是否可以使用RabbitMQ设计此系统?如果这与答案相关,我会使用Python和Pika。

谢谢!

1 个答案:

答案 0 :(得分:0)

RabbitMQ可以做到这一点。

您只想在准备就绪时读取队列 - 因此启动可以产生外部进程并观察它的线程,然后在进程完成时从队列中获取下一条消息。然后,您可以并行运行多个线程来管理多个队列。

我不确定你想要什么?您是否试图阻止RabbitMQ向该队列添加新元素(如果它太满(因为它的元素处理太慢/根本没有)?当您向队列添加消息时,可能有一种方法可以执行此操作 - 在添加项目之前,请检查以确保该队列中已有的消息数量不超过"所有队列的平均值?