AWS SNS发布到AWS Lambda的可靠性

5

从AWS SNS FAQ页面(可靠性部分)可以看到SNS保证至少一次将消息传递给SQS,但不清楚当通知发送到Lambda时是否适用相同的规则。

所以问题是,当消息发送到AWS Lambda时,SNS是否提供至少一次的消息传递保证?


这是一个理论问题,还是你正在遇到可能的问题? - Michael - sqlbot
在选择正确的方法之前,这完全是一个理论问题。 - isaranchuk
这个 链接 有帮助吗? - Michael - sqlbot
3个回答

7

Q.如果订阅端点不可用,Amazon SNS消息会发生什么?

Lambda: 如果Lambda不可用,则SNS将在1秒的间隔内重试2次,然后指数回退从1秒到20分钟进行10次,最终每20分钟进行38次,在超过13小时的时间内总共尝试50次,然后将消息从SNS中丢弃。

https://aws.amazon.com/sns/faqs/


3
同一常见问题页面指出:
当消息发布到主题时,Amazon SNS将尝试向所有已注册该主题的订阅者发送通知。由于潜在的互联网问题或电子邮件传递限制,有时可能无法成功地将通知发送到HTTP或电子邮件端点。对于HTTP,可以使用SNS交付策略来控制重试模式(线性、几何、指数回退)、最大和最小重试延迟以及其他参数。如果需要确保所有已发布的消息都能被成功处理,开发人员应该将通知传递到SQS队列中(除了其他传输方式的通知)。
这适用于所有非SQS订阅者。

我看到了这部分内容,但是他们在常见问题解答中也有一个关于AWS Lambda的单独部分,所以我有点困惑。 - isaranchuk
好的。但我没有看到任何有关交付部分的提及。那你具体是什么困惑呢? - Arafat Nalkhande

2
我认为你的问题是:Lambda函数订阅SNS主题后,每个消息会被调用一次还是多次?
如果是这样,答案是:至少一次。以下来自FAQs的部分有助于回答这个问题,其中重点在于:
“Q: 订阅者将收到每个消息多少次?
尽管大多数情况下,每条消息都将仅传递给您的应用程序一次,但Amazon SNS的分布式特性和瞬态网络条件可能导致订阅者端偶尔出现重复消息。开发人员应设计其应用程序,以使处理一条消息多次不会创建任何错误或不一致性。”

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接