AWS SQS:延迟使消息无法处理

时间:2015-09-08 18:48:20

标签: amazon-web-services amazon-sqs

这是我的情景:

  • 我有一个处理许多任务的SQS队列。这些任务可能而且经常会失败。他们的失败是常见的,有点期待。
  • 当任务失败时,我想在一段时间后重试 ,并在经过一定程度的重试后将项目放入DLQ。我不想立即重试。

我有一个工作EB应用程序来处理这些任务。成功后,我返回200(并且任务已成功从队列中删除)。当它失败时,我返回404,任务立即返回队列(因此​​,立即重试)。这是不希望的,我想在重试之前延迟这个失败的项目。

是否可以通过可见性超时和延迟队列的组合来实现这一目标?

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:1)

回答了我自己的问题,原来我看错了地方(SQS配置选项,而不是EB配置选项)。我正在寻找的神奇设置是EB配置选项中的“错误可见性超时”,它允许您控制失败项目返回其队列之前的时间。