芹菜工人失败任务重新排队逻辑(RabbitMQ)

时间:2019-03-05 19:01:58

标签: python rabbitmq celery

我有以下设置:

celery version = 4.2.1
task_reject_on_worker_lost = True
task_acks_late = True

我正在尝试首先获取一条消息以路由到“ QueueA”,如果正在处理它的芹菜工人突然失败,我希望该消息重新排队到新队列“ QueueB”。是否可以通过调整RabbitMQ队列设置或通过芹菜来做到这一点?

我已经为QueueA正确配置了一个死信交换,该死信交换使用例如TTL来处理这种类型的路由(即,将消息发送到QueueA直到TTL,然后到达死信队列,最后返回到QueueB)。

1 个答案:

答案 0 :(得分:0)

RabbitMQ mailing list

  

在通道(以及连接)上的自动重新排队总是发生在同一队列1上。   这样的情况不会导致死字,任何DLX设置都不会有任何效果。   在3.8中的仲裁队列中,自动重新排队有时可能会导致文字失效,因为存在可选   重新交付计数限制。那将接近您想要的。由于仲裁队列不是RabbitMQ 3.7中可用的功能,因此该功能也没有。   目前,[8.0]的3.8.0版本为beta.3,并将于2019年中期发布。   1. https://www.rabbitmq.com/confirms.html   2. https://github.com/rabbitmq/rabbitmq-server/releases/tag/v3.8.0-beta.3   重新交付限制记录在此处(https://next.rabbitmq.com/quorum-queues.html