我正在尝试弄清楚如何配置 celery 以在消息按配置传递
max_retries
后将其移动到死信队列。
目前正在删除(确认)超出的消息
max_retries
。
有这样的选择吗?
目前,据我所知,这是不可能的,但很快 Celery 应该能够做到。您已经可以测试我链接到的 Celery 问题中提到的 PR 中的分支,看看它是否按您的预期工作。
按照 DejanLekic 的回答,我创建了一个带有本地 SQS 的 dockerized 项目,展示了他想要的解决方案
可以在这里看到https://github.com/galCohen88/celery_sqs_redis_backend
在 Celery 版本中
celery = {extras = ["sqs"], version = "^5.3.4"}
你可以坚持下一个方法:
Task.retry(max_retries=5)
(只是不要在此处传递重试异常参数)MaxRetriesExceededError
接住 raise
和 requeue=False
拒绝。 最终任务将被重新驱动到 SQS DLQ