调整AWS Lambda SQS触发器批量参数后消息未删除问题排查
问题:Lambda处理SQS消息后未删除,调整batchSize后队列统计异常
现象
- 初始配置
batchSize:10、batchWindow:30时,Lambda执行成功后能正常删除SQS消息 - 把
batchSize改成32后,Lambda调用频率降低,执行日志显示无异常,但队列统计彻底异常:- 每秒删除消息数从90-100直接降到0,且持续超过1小时
- 飞行中消息数从约30暴涨到4000
排查细节
- 翻遍AWS相关文档没找到对应原因
- Lambda执行日志完全正常,没有报错信息
- 使用的依赖版本:
spring-cloud-function-adapter-aws:3.1.5、aws-lambda-java-events:3.10.0
根因与解决办法
根因是开启了Report batch item failures功能,但代码没按照AWS的要求返回消息处理状态。
解决办法:
- 直接关闭Report batch item failures功能,消息删除逻辑立刻恢复正常
- 如果要保留这个功能,必须在Lambda处理完消息后,返回包含失败消息项的响应,让SQS知道哪些消息处理失败(只有这些失败的会重新入队,成功的消息才会被自动删除)
内容的提问来源于stack exchange,提问作者malik_cesur
相关产品推荐
相关产品推荐

