如果有人可以帮助解释,我想了解我的工作流程中是否需要 SQS。在我的应用程序中,当采取操作时,它会将信息提交到 SNS 主题,该主题调用 Lambda 进行一些处理。这效果很好。
当我在线研究时,似乎人们也在这个堆栈中使用 SQS,其中 SNS 将信息放在 SQS 上,然后 SQS 将调用 Lambda。
我想我想要理解的是这方面对 SQS 的需求。这会增加什么价值?换句话说,直接从 SNS 调用 Lambda 会损失什么?
在 SNS 和 Lambda 之间使用 SQS 的主要优点是重新处理。
假设 Lambda 由于某种原因(例如超时或内存占用不足)无法处理某些事件,您可以增加超时(最多 5 分钟)或内存(最多 1.5GB)并重新启动轮询,然后您可以重新处理较旧的事件。
这在 SNS 到 Lambda 的情况下是不可能的,其中如果 Lambda 失败,事件就会丢失。即使您配置了 DLQ,您仍然必须做好单独读取和处理消息的准备
因此,如果您的活动很重要并且您不想错过它们,那么请选择 SNS - SQS - Lambda
使用 SQS 的另一个优点是节省 Lambda 调用的成本(感谢 @codesinthedark 提出这一点)。您可以获得更好的扩展性和更低的成本,因为它允许您批量处理消息。因此,可以对一批 10 条消息执行一个 lambda,而在直接 SNS 的情况下,每条消息都会触发一次 lambda 调用。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)