SQS 消息正在转移到 DLQ,甚至没有处理过一次

问题描述 投票:0回答:1

消息甚至一次都不处理就转移到 DLQ。

  1. 可用消息:1500
  2. 已处理消息:1430
  3. 一次都没有处理就转移到DLQ:70

我想知道为什么这 70 条消息被移至 DLQ,甚至至少一次处理

在线检查/stackoverflow,但没有找到与此相关的任何内容。

我检查了日志中是否有这些消息,但没有找到像其他人那样的消息。 我没有打开 AWS 控制台,看到了会增加 max_receives 的消息,但我没有这样做。

我使用 @sqsListener 一次处理 20 条消息,无论我们收到多少条消息。

所以,不存在系统闲逛/其他问题的可能性。

如有任何帮助,我们将不胜感激。

java amazon-web-services amazon-sqs
1个回答
0
投票

太晚了,但我遇到了同样的问题。就我而言,我在 DLQ 中发现了一些消息,其中那些

messageId
甚至没有被我的 lambda 函数拉取/处理(为什么?!?)。声明:这个比例很小(超过 10k 条消息中有 20 条),但有时会发生。

搜索为什么会发生这种情况,我在 AWS 文档中找到了这个paragrahp

由于 Amazon SQS 是分布式系统,因此即使 Amazon SQS 在从 ReceiveMessage API 方法调用成功返回时将消息标记为已送达,消费者也可能收不到消息。

有可能少数消息无法被 SQS 服务处理,然后这些消息被发送到 DLQ,因为被视为“失败”。这就是为什么 AWS 建议我们将 DLQ 的最大接收数量至少设置为 5,默认值为 10(在我的例子中设置为 1)。

将我的

maxReceiveCount
升级到5我解决了这个问题。

希望这个答案对某人有帮助:)

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