消息甚至一次都不处理就转移到 DLQ。
我想知道为什么这 70 条消息被移至 DLQ,甚至至少一次处理
在线检查/stackoverflow,但没有找到与此相关的任何内容。
我检查了日志中是否有这些消息,但没有找到像其他人那样的消息。 我没有打开 AWS 控制台,看到了会增加 max_receives 的消息,但我没有这样做。
我使用 @sqsListener 一次处理 20 条消息,无论我们收到多少条消息。
所以,不存在系统闲逛/其他问题的可能性。
如有任何帮助,我们将不胜感激。
太晚了,但我遇到了同样的问题。就我而言,我在 DLQ 中发现了一些消息,其中那些
messageId
甚至没有被我的 lambda 函数拉取/处理(为什么?!?)。声明:这个比例很小(超过 10k 条消息中有 20 条),但有时会发生。
搜索为什么会发生这种情况,我在 AWS 文档中找到了这个paragrahp:
由于 Amazon SQS 是分布式系统,因此即使 Amazon SQS 在从 ReceiveMessage API 方法调用成功返回时将消息标记为已送达,消费者也可能收不到消息。
有可能少数消息无法被 SQS 服务处理,然后这些消息被发送到 DLQ,因为被视为“失败”。这就是为什么 AWS 建议我们将 DLQ 的最大接收数量至少设置为 5,默认值为 10(在我的例子中设置为 1)。
将我的
maxReceiveCount
升级到5我解决了这个问题。
希望这个答案对某人有帮助:)