AWS SQS:延迟提供无法处理的消息

AWS SQS: Delay making available a message that failed to process

这是我的场景:

我有一个处理这些任务的工作 EB 应用程序。当它成功时,我 return 200(任务成功地从队列中移除)。当它失败时,我 return 404,任务立即 returned 到队列中(因此,立即重试)。这不是我们想要的,我想在重试之前延迟这个失败的项目。

是否可以结合使用可见性超时和延迟队列来做到这一点?

回答了我自己的问题,结果我找错了地方(SQS 配置选项,而不是 EB 配置选项)。我正在寻找的魔术设置是 EB 配置选项中的 "error visibility timeout",它允许您控制失败的项目在返回其队列之前的时间量。

您可以使用 SQS 本机执行此操作,方法是在您刚刚处理失败的消息上调用 ChangeMes​​sageVisibility 并将 VisibilityTimeout 设置为您想要的任何值:http://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_ChangeMessageVisibility.html