【发布时间】:2021-01-11 14:42:46
【问题描述】:
我的项目流程是:
CloudWatch >> SQS >> Lambda
Cloudwatch 调用标准 SQS,SQS 调用 lambda 函数。
根据文档,lambda 重试逻辑在异步调用中工作,但是 SQS 基于轮询机制并遵循同步行为。这是我的理解。
问题:-
我用两个场景测试了我的代码:-
- lambda retry 0 :那时一切正常,我的 lambda 运行了 3 次。
- Lambda retry 2 :- 那时 lambda 重试,messageId 是 2 个不同的 id,lambda 函数运行 6 次。
第二个场景的输出:-
2020-09-24T20:02:52.222+05:30
MessageId : 5a8f5dbd-b07d-4c80-9d34-e5efb1002b3b
ApproximateReceiveCount:1
2020-09-24T20:03:51.047+05:30
MessageId :15ae23e3-472c-4d6e-99a6-8a248dae353e
"ApproximateReceiveCount": "1"
2020-09-24T20:07:50.863+05:30
MessageId :5a8f5dbd-b07d-4c80-9d34-e5efb1002b3b
"ApproximateReceiveCount": "2"
2020-09-24T20:08:50.963+05:30
MessageId :15ae23e3-472c-4d6e-99a6-8a248dae353e
"ApproximateReceiveCount": "2"
2020-09-24T20:12:50.652+05:30
MessageId :5a8f5dbd-b07d-4c80-9d34-e5efb1002b3b
"ApproximateReceiveCount": "3"
2020-09-24T20:13:50.347+05:30
MessageId :15ae23e3-472c-4d6e-99a6-8a248dae353e
"ApproximateReceiveCount": "3"
Sqs 可见性超时为:5 分钟。
所以,我的问题是
上述数据行为的原因可能是什么?
根据我的项目流程,lambda 重试逻辑应该可以工作吗?
【问题讨论】:
-
你能解释一下你的意思吗?哪个
lambda retry 0?哪个选项确切;是吗?什么消息,您是手动提交的吗?他们有多少?观察到的行为有什么问题? -
在 lambda 重试选项中,我们有 0、1、2 个选项。此功能允许用户设置 lambda 在失败时重试的次数。
标签: node.js amazon-web-services lambda aws-lambda amazon-sqs