【问题标题】:SQS as an event trigger for LambdaSQS 作为 Lambda 的事件触发器
【发布时间】:2020-09-28 08:32:56
【问题描述】:

我正在尝试在无服务器架构中实现一项服务,该架构将采用基本上是 JSON 对象的“订单”,并且每 X 个订单都会触发一个 Lambda 函数来处理这些订单。我已经阅读了有关 Amazon SQS 作为此类选项的相当多的内容,但希望确认这是正确的方法。

我可以使用 SQS 订阅发布订单的 SNS 提要,然后让 Lambda 轮询排队以批处理进来的订单吗?

提前致谢。

【问题讨论】:

  • 是的,这将是一个很好的方法,但如果您的 lambda 执行次数不多,您只需使用服务,它可以通过 SNS 服务触发 lambda。
  • 谢谢你,阿卜杜勒。你的意思是因为没有很多 Lambda 执行,还是因为没有很多订单?这个特殊的系统很可能有数万或更多的订单

标签: amazon-web-services amazon-sqs aws-serverless


【解决方案1】:

我做了一些实验,发现:

  • 如果使用SendMessageBatch() 向 Amazon SQS 发送多条消息
  • 然后这些消息将在Records 参数中作为多个条目传递给单个 AWS Lambda 函数
  • 但最多只能达到 Lambda 触发器中 Batch Size 设置的最大记录数

因此,如果您的订购系统可以将消息作为一个批次发送到 SQS,那么 Lambda 函数会将它们作为一个批次进行处理(最大为批次大小)。但是,这需要您在将消息发送到 Lambda 之前“缓冲”订购系统中的消息,如果出现问题,可能会丢失信息。 p>

通常最好立即处理订单,除非有特定原因希望使用批次。

如果您希望将订单“扇出”到多个系统,插入 Amazon SNS 会很有用,但如果您只有一个消息目的地,则没有必要。

【讨论】:

    猜你喜欢
    • 2020-05-17
    • 2020-07-28
    • 2021-03-28
    • 2021-11-28
    • 1970-01-01
    • 2022-01-27
    • 1970-01-01
    • 2021-10-15
    • 2019-03-26
    相关资源
    最近更新 更多