amazon-web-services - 处理失败后 Lambda 未消耗队列中的所有消息
问题描述
我有一个 SQS 队列,命名事件,带有一个 lambda 触发器,命名为消费者。此外,我有一个死信队列,名称为毒事件,在队列上配置,事件(不是 Lambda)。当 lambda 抛出错误时,它不会按预期删除收到的消息,并将消息留在队列中。lambda 将尝试再次处理消息,这可以从消息的接收计数增加中看出。
我的目标是在超过 MaxReceiveCount 10 后将所有无法处理的消息发送到死信队列。当队列中可用的消息增加并且 lambda 无法扩展以处理可用消息时,我的问题就开始了。
我假设 lambda 将扩展,以便它将处理队列中的所有消息,直到接收计数将超过 maxReceiveCount 并发送到死信队列。然而情况并非如此,lambda 只能扩展到每分钟大约 100 次调用,这不足以处理消息。
注意 lambda 的并发设置为默认值,1000
我有两个工作理论:
- lambda 将首先处理新消息并仅扩展到处理新消息,然后再处理队列中可用的消息。
- 我的第二个理论是 lambda 错误计数如此之高,以至于 aws 将拒绝扩展函数来处理可用消息。
lambda 调用
可用消息
错误计数和成功率
lambda 并发
解决方案
推荐阅读
- javascript - 更改对象中键的数据类型
- python-3.x - 在数据框中引入一个新列,其值基于 PySpark 中的条件
- flutter - sembast 推荐的创建商店的方法
- jmeter - JMeter 子网问题
- nuget - NuGet:正在恢复包... 已添加具有相同密钥的项目
- python - 如何仅使用 numpy 将过滤器应用于图像?
- javascript - 尝试将图像上传到 Amazon S3 但出现错误
- git - 将git分支添加到头文件中的批处理文件
- php - 在 HTML 中生成链接/URL 预览
- python - 当使用 Telethon 在特定频道中发送消息时,如何运行操作?