gpt4 book ai didi

amazon-web-services - SNS 的 Lambda 节流行为

转载 作者:行者123 更新时间:2023-12-05 03:00:37 25 4
gpt4 key购买 nike

在阅读 SNS FAQ 时关于使用 Lambda 函数重试行为的部分,我遇到了以下语句:

Q: What happens to Amazon SNS messages if the subscribing endpoint is not available? Lambda: If Lambda is not available, SNS will retry 2 times at 1 seconds apart, then 10 times exponentially backing off from 1 seconds to 20 minutes and finally 38 times every 20 minutes for a total 50 attempts over more than 13 hours before the message is discarded from SNS.

据我所知,Lambda 函数实现了自己的节流重试机制,如 Lambda Throttling Bevaviour Documentation 中所述:

Asynchronous invocation: If your Lambda function is invoked asynchronously and is throttled, AWS Lambda automatically retries the throttled event for up to six hours, with delays between retries.

那么,当函数受到限制并出现另一条 SNS 消息时,究竟会发生什么? SNS 是将 Lambda 视为“可用”并中止重试机制,从而允许 Lambda 自动重试,还是继续重试传递消息?

最佳答案

“可用”一词是指 SNS 联系 Lambda 服务并提交单个请求以调用该函数的能力。

理解这个的关键需要你先知道SNS invokes Lambda functions asynchnously ,然后您了解其含义。

异步调用请求不会向调用方(在本例中为 SNS)提供任何反馈,无论函数是立即运行还是被限制,或者它是成功还是抛出异常。

SNS >> Lambda: "Hi, run this Lambda function asynchronously, with this payload."
Lambda >> SNS: "Okay, I received your request and will do that as soon as it is possible. Goodbye."

调用者 (SNS) 不关心后面的细节。成功发出请求后,SNS 完成处理该消息,现在由 Lambda 服务立即调用函数和/或参与记录的 Lambda 重试行为。

SNS 每条消息实际上只联系 Lambda 服务一次。当它不能这样做时,Lambda 就不是“可用的”。这种情况应该非常、非常少地发生……但是如果 SNS 无法建立联系,那就是当 SNS 参与 SNS 常见问题解答中描述的行为时——尝试提交调用该功能的请求。一旦完成,SNS 的角色就完成了,其余的由 Lambda 服务处理。

每条消息都在 SNS/Lambda 集成中独立处理,SNS 会尽快传递每条消息,SNS 不会意识到函数调用随后是否受到限制。

关于amazon-web-services - SNS 的 Lambda 节流行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56670249/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com