首页 > 解决方案 > SNS - 具有 lambda 处理的 SQS 扇出

问题描述

对于某个应用程序,我正在考虑使用 SNS - SQS 扇出并将 lambdas 订阅到 SQS 队列的设置。在 SNS 和 lambda 之间使用 SQS 队列是否过大,或者我应该将 lambda 订阅到我的 SNS 主题?我不想丢失在处理过程中失败的消息,但也许我可以通过绑定到 lambda 的 DLQ 来解决这个问题?在两者之间使用 SQS 是否有特定的优势/区别?

标签: amazon-web-servicesaws-lambdaamazon-sqsamazon-sns

解决方案


通常,有人想要使用扇出方法的原因是,是否需要从同一个事件同时处理多个动作。

例如,在预订流程中,新预订可能会发布到 SNS 主题,该主题具有用于通知仓库的队列、用于向客户发送确认电子邮件的队列以及用于根据订单更新某些忠诚度积分的队列。

存在这种架构是因为单个队列将有一个消费者进程,并在完成后从队列中删除该项目。

如果您有一个项目,您只需使用 SQS。SQS 支持Lambda 的DLQ,因此您可以在任何项目未成功处理的情况下使用它进行调试。

SQS 优于 SNS 的一个优点是,使用 SQS,您可以将多条记录分组以一次分发(最多 10 条),而使用 SNS,它只会包含一条消息。默认情况下,您最多可以支持 1000 个同时调用。如果您遇到超过此项目可能会积压(如果您的吞吐量足够)。


推荐阅读