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