我有以下设置:
celery version = 4.2.1
task_reject_on_worker_lost = True
task_acks_late = True
我正在尝试首先获取一条消息以路由到“ QueueA”,如果正在处理它的芹菜工人突然失败,我希望该消息重新排队到新队列“ QueueB”。是否可以通过调整RabbitMQ队列设置或通过芹菜来做到这一点?
我已经为QueueA正确配置了一个死信交换,该死信交换使用例如TTL来处理这种类型的路由(即,将消息发送到QueueA直到TTL,然后到达死信队列,最后返回到QueueB)。>
答案 0 :(得分:0)
在通道(以及连接)上的自动重新排队总是发生在同一队列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)