AWS SQS:延迟使无法处理的消息可用
Posted
技术标签:
【中文标题】AWS SQS:延迟使无法处理的消息可用【英文标题】:AWS SQS: Delay making available a message that failed to process 【发布时间】:2015-12-04 13:40:38 【问题描述】:这是我的场景:
我有一个处理多个任务的 SQS 队列。这些任务可能而且经常会失败。他们的失败很常见,在某种程度上是意料之中的。 当任务失败时,我想在一定时间后重试,并在重试一定次数后将项目失败到 DLQ。我不想立即重试。我有一个处理这些任务的工作人员 EB 应用程序。当它成功时,我返回 200(并且该任务已成功从队列中删除)。当它失败时,我返回 404,并且任务立即返回到队列中(因此,立即重试)。这是不希望的,我想在重试之前延迟这个失败的项目。
是否可以结合可见性超时和延迟队列来做到这一点?
【问题讨论】:
【参考方案1】:回答了我自己的问题,结果发现我找错了地方(SQS 配置选项,而不是 EB 配置选项)。我一直在寻找的神奇设置是 EB 配置选项中的“错误可见性超时”,它允许您控制失败项目在返回其队列之前的时间量。
【讨论】:
【参考方案2】:您可以在 SQS 本地执行此操作,方法是对您刚刚未能处理的消息调用 ChangeMessageVisibility 并将 VisibilityTimeout 设置为您想要的任何值:http://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_ChangeMessageVisibility.html
【讨论】:
以上是关于AWS SQS:延迟使无法处理的消息可用的主要内容,如果未能解决你的问题,请参考以下文章
当消息存在于 SQS 队列中时触发 AWS 中的 Lambda 函数