我遇到了一个问题,我在共享模式下设置了一个队列并且多个消费者绑定到它。问题在于,rabbitmq 似乎正在序列化消息,也就是说,一次只能运行一个消费者。我需要它是平行的,但是,我似乎无法弄清楚如何。
每个消费者都在自己的进程中运行。队列中有大量消息。我正在使用 py-amqplib 与 RabbitMQ 交互。
有什么想法吗?
我遇到了一个问题,我在共享模式下设置了一个队列并且多个消费者绑定到它。问题在于,rabbitmq 似乎正在序列化消息,也就是说,一次只能运行一个消费者。我需要它是平行的,但是,我似乎无法弄清楚如何。
每个消费者都在自己的进程中运行。队列中有大量消息。我正在使用 py-amqplib 与 RabbitMQ 交互。
有什么想法吗?
那么预取(QOS)呢?在小型队列上,我通过声明队列、获取当前可用的消息数量、附加消费者、使用消息然后在使用完消息数量后关闭它来呈现并行性。在不确认消息的情况下关闭通道使消息可供其他消费者使用,足够快地轮询队列,您可以获得并行解决方案。
请参考,首选的 AMQP 模型似乎是每个连接消费者的队列。您应该创建一个“直接”交换并就您的消费者都将监听的路由密钥达成一致。然后,每个连接的消费者都应该创建一个独占的、私有的、非持久队列,并使用它queue_bind()
来为他们的队列订阅与交换机上的公共路由密钥匹配的消息。使用这种安排,我的工作人员可以并行操作,而不是让他们的操作序列化!