由芹菜工人消费的rabbitmq循环法

时间:2017-06-29 23:54:56

标签: rabbitmq celery

我使用的是rabbitmq经纪人,并且有一位芹菜工人订阅了经纪人。根据我的测试,看起来像rabbitmq以FIFO顺序处理消息。因为已经填充了一个队列,然后是另一个队列,然后是另一个队列,依此类推,我的工作者会消耗来自队列1的所有消息,并且只有在完成队列1后才会移动到队列2。

是否有可能改变这种行为,以便芹菜工人以循环方式消费?即,芹菜工作者消耗来自队列1的消息,然后消息来自队列2的消息,依此类推,一旦消息已从每个其他队列消耗,则仅返回到队列1。

由于

1 个答案:

答案 0 :(得分:0)

是的,您必须将prefetch_count减少为1,这样一次只能提取1条消息。在Celery中,您可以通过将CELERYD_PREFETCH_MULTIPLIER设置为1来进行存档。您可能还需要设置task_acks_late = True,请确保阅读了两个文档。

来自the Celery docs

  

要禁用预取,请将worker_prefetch_multiplier设置为1。   设置为0将允许工人继续消耗尽可能多的食物   消息。