带有 lambda 的 AWS FIFO 队列 – 每个消息组一个并发 lambda

OhM*_*Mad 2 amazon-sqs amazon-web-services aws-lambda

我已经设置了一个 FIFO 队列,我想按消息组 ID 对消息进行分区。

作为事件触发器,我使用了 lambda 函数。

现在我的问题是:是否可以为每个消息组只允许一个并发的 lambda 函数调用?

因此,如果我有Group AGroup B,并且每个消息组有 20 条消息,则每个消息组一次将一条消息(我已将批量大小设置为 1)传递给 lambda 函数,并且只在前一个消息组传递下一个消息消息处理完成。

是否可以使用 FIFO 队列和 lambda 或者我是否需要查看其他服务以允许这样做?

注意:我已经研究过使用单独分片的 Kinesis,但是因为会有很多消息组,所以分片的总成本会太多。

谢谢!

小智 7

它应该以您想要的方式工作。

AWS Lambda 的新增功能 – SQS FIFO 作为事件源

在 SQS FIFO 队列中,使用多个 MessageGroupId 使 Lambda 能够使用更大的并发限制扩展和处理队列中的更多项目。总并发数等于或小于 SQS FIFO 队列中唯一 MessageGroupId 的数量。

  • 可能值得一提的是,引用并不意味着每个组 ID 都会有一个 lambda(如 OP 所希望的那样)。当消费者的数量小于组ID计数时,在某些情况下(消息序列),消息可能最终会被显着延迟。 (2认同)