RabbitMQ从具有多个使用者的队列中序列化消息

时间:2010-05-08 17:30:04

标签: python parallel-processing rabbitmq

我遇到了一个问题,我在共享模式下设置了一个队列,并且多个使用者绑定了它。问题是,似乎rabbitmq正在序列化消息,也就是说,一次只能有一个消费者能够运行。我需要这是平行的,但是,我似乎无法弄清楚如何。

每个消费者都在自己的流程中运行。队列中有很多消息。我正在使用py-amqplib与RabbitMQ进行交互。

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

预取(QOS)怎么样?在小队列中,我通过声明队列,获取当前可用的消息数,附加消费者,消费消息然后在消耗了消息数量后关闭消息来表示并行性。在没有确认消息的情况下关闭通道会使消息可供其他消费者使用,足够快地轮询队列并且您可以使用并行解决方案。

答案 1 :(得分:0)

Refefer,首选的AMQP模型似乎是每个连接消费者的队列。您应该创建一个“直接”交换并同意您的消费者都会倾听的路由密钥。然后,每个连接的使用者应创建一个独占的,私有的,非持久的队列,并使用queue_bind()将其队列订阅到与交换上的公共路由密钥匹配的消息。使用这种安排,我的工作人员正在并行操作,而不是将他们的操作序列化!