如何使用SQS实现批处理?

问题描述 投票:0回答:1

我有一个 lambda(我们称之为监控 lambda),它通过 SQS 队列将消息发送到另一个 lambda(通知 lambda)。

理想情况下,我想完成以下任务: 监控 lambda 将任意数量的通知放入 SQS。

当出现以下两种情况之一时:

  1. 截止日期(假设 30 秒)
  2. 在本例中,SQS 中的通知数量达到了 100 条通知

通知 lambda 由一批所有通知触发,以便可以将它们聚合到一封电子邮件中。

SQS 可以做到这一点吗?我是否需要单独的服务来轮询 SQS 队列?

amazon-web-services aws-lambda lambda amazon-sqs serverless
1个回答
0
投票

从 SQS 队列为通知 lambda 创建触发器(也称为事件源映射)时,您可以选择应用批处理行为。在创建事件源映射期间,您可以指定要一起处理的项目数(批量大小)以及等待对这些消息进行分组的最长时间(批处理窗口)。

当 lambda 函数轮询 SQS 队列时,它遵循以下模式:它要么等待批处理窗口上指定的最大持续时间,要么等待批处理窗口内消息数量达到定义的最大批处理大小持续时间,它将继续处理 SQS 有效负载。

下图说明了如何使用 AWS 控制台设置

Batch Size
Batch Window

要了解更多信息,请参阅 AWS 文档

© www.soinside.com 2019 - 2024. All rights reserved.