【发布时间】:2017-11-05 16:58:52
【问题描述】:
我正在构建一项服务,该服务将使用来自另一个来源(服务)的数据。所以,我正在考虑使用以下管道:-
其他服务 ----> SNS 主题 ----> SQS ----> AWS Lambda ----> Dynamo Db
所以,上面的流程说的是另一个服务会将数据推送到 SQS 将成为订阅者的 SNS 主题。现在 AWS Lambda 将在此 SQS 上有一个触发器,该触发器将侦听 SQS 中的消息并将其推送到 Dynamo Db。虽然这样做看起来没问题。但现在我在想我是否真的需要 SQS。我可以避免使用它吗? AWS Lambda 没有使用 SQS,而是直接在 SNS 上有一个触发器。如果我不使用 AWS SQS,我只是在考虑一种情况。如果 AWS Dynamo DB 发生故障,它将如何处理这种情况?我认为只有 SNS,在此期间我会丢失一些消息,我的 Dynamo Db 处于失败状态,但如果我有 SQS,那么这些消息将存储在 SQS 队列中。
如果我的理解正确,请告诉我。
非常感谢您的帮助。
【问题讨论】:
-
SQS 无法触发 Lambda,因为它是一种轮询架构。但是,您可以从 SNS 触发 Lambda,因为它像 Lambda 一样是事件驱动的。有关更多信息,请参阅 supported event sources 了解 Lambda。
-
感谢您的回答。我认为 SQS 没有直接的方法可以做到这一点。但是我认为我们可以按照本博客中提到的一种自定义方式进行操作。 cloudonaut.io/… 。除此之外,我的问题主要是关于如果我只使用 SNS,没有 SQS,如果 Dynamo Db 失败,会不会有问题。
标签: amazon-web-services amazon-dynamodb aws-lambda amazon-sqs amazon-sns