RabbitMQ从多个消费者队列序列化消息

问题描述:

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

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

有什么想法?

预取(QOS)如何?在小的队列中,我通过声明队列,获取当前可用消息的数量,附加消费者,消费消息,然后在消息数量消耗后关闭消息,从而给出并行性的外观。在不确认消息的情况下关闭通道会使消息可供其他消费者使用,并且足够快地轮询队列,并且可以使用并行解决方案。

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