这是我的场景:
- 我有一个处理大量任务的 SQS 队列。这些任务可能而且经常会失败。他们的失败很常见,而且在某种程度上是意料之中的。
- 当任务失败时,我想在一定时间后重试,并在重试一定次数后将项目放入 DLQ 中。我不想立即重试。
我有一个处理这些任务的工作 EB 应用程序。当它成功时,我返回 200(任务成功地从队列中移除)。当它失败时,我返回 404,任务立即返回到队列中(因此,立即重试)。这不是我们想要的,我想在重试之前延迟这个失败的项目。
是否可以结合使用可见性超时和延迟队列来做到这一点?
最佳答案
您可以使用 SQS 在您刚刚处理失败的消息上调用 ChangeMessageVisibility 并将 VisibilityTimeout 设置为您想要的任何值来本地执行此操作:http://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_ChangeMessageVisibility.html
关于amazon-web-services - AWS SQS : Delay making available a message that failed to process,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32465104/