我有这样的系统设计
SQS -> 触发器 -> Lambda -> 如果失败 -> DLQ
前提条件
- Lambda 函数使用 try catch 块,它不会抛出任何错误。
- Lambda 函数永远不会耗尽内存或超时。(来自 Lambda 监控)
- Lambda 监控中的错误计数为 0
- 切勿使用 SQS 控制台查看消息
- Lambda SQS batchSize 设置为 1
- DLQ 最大接收设置为 1
- Lambda 调用大约 60k
跑了一会后
- 我们在 DLQ 中发现了一些消息
- DLQ 中的消息具有属性 ApproximateReceiveCount 为 2 或更大。
这是预期的吗?
在我看来,如果 Lambda 中没有错误抛出,DLQ 消息应该始终为零。