AWS 死信队列消息上的原因属性用于过滤要重新发布到主队列的消息?

问题描述 投票:0回答:2
是否有一个配置设置可以让 lambda 或 SQS 在消息发送到 DLQ 时添加原因属性?

消息可能因错误或限制而最终进入死信队列。在消息被限制的情况下,它不一定有什么问题,它可以被发送回主队列以再次处理。但是,由于格式错误或数据错误而根本无法处理的消息无法发送回主队列,因为它会再次失败。

DLQ Redrive 返回源将重新发布受限制的消息(在大多数情况下会成功),但它也会重新发布其他所有内容,我知道这会失败。

但是没有任何机制可以根据消息到达 DLQ 所采取的路径来找到消息的哪些标签。

我想做的是迭代 DLQ 并拾取被限制的消息并将它们放回主队列中,其他消息保存在数据库中。

大家有什么想法吗?

amazon-sqs dead-letter
2个回答
0
投票
我相信您需要在应用程序中自己实现此逻辑,因为目前无法自动添加消息属性。以下是实现它的一种方法:

    在应用程序中,检查错误。如果错误可以重试,则将消息放回到原始队列中。或者让可见性超时到期,以便消息自动添加回队列。您可以设置重新驱动阈值以限制发送到 DLQ 之前的重试次数。
  • 如果错误不可重试,请将其添加到故障队列中,稍后您可以在其中检查消息以进行调试。
使用此解决方案,您将获得自动重试。您可以监控 DLQ 和故障队列,以收到两种故障情况的通知。


0
投票
截至 2023 年 1 月,当 SQS 连接到 lambda 时,有一个名为

max_concurrency

 的新功能。

最大并发(SQS 传递设置)与预留并发(Lambda 函数设置)相结合应有助于防止消息因限制而最终进入 DLQ。对于限制情况,您不再需要将 maxReceiveCount 设置为较高的数字。

AWS 计算博客: 引入使用 Amazon SQS 作为事件源时 AWS Lambda 函数的最大并发性

© www.soinside.com 2019 - 2024. All rights reserved.