我使用的是rabbitmq经纪人,并且有一位芹菜工人订阅了经纪人。根据我的测试,看起来像rabbitmq以FIFO顺序处理消息。因为已经填充了一个队列,然后是另一个队列,然后是另一个队列,依此类推,我的工作者会消耗来自队列1的所有消息,并且只有在完成队列1后才会移动到队列2。
是否有可能改变这种行为,以便芹菜工人以循环方式消费?即,芹菜工作者消耗来自队列1的消息,然后消息来自队列2的消息,依此类推,一旦消息已从每个其他队列消耗,则仅返回到队列1。
由于
答案 0 :(得分:0)
是的,您必须将prefetch_count
减少为1,这样一次只能提取1条消息。在Celery中,您可以通过将CELERYD_PREFETCH_MULTIPLIER
设置为1来进行存档。您可能还需要设置task_acks_late = True
,请确保阅读了两个文档。
要禁用预取,请将worker_prefetch_multiplier设置为1。 设置为0将允许工人继续消耗尽可能多的食物 消息。