AWS Lambda SQS集成:如何强制并发lambda

时间:2018-12-13 09:24:42

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

当前,我正在使用SQS队列来触发Lambda函数。 我的Lambda函数一次只能处理一个SQS记录,我想尽快耗尽SQS队列

所以我设置了

Delivery Delay: to 0 seconds,

Batch size: to 1

And set Lambda to use unreserved account concurrency 1000

假设情况为例:一条SQS消息被推送到Lambda,现在正在处理它。然后另一条消息到达SQS。我们确定要创建一个新的lambda来处理该消息吗?

2 个答案:

答案 0 :(得分:3)

Lambda可以串行执行,但永远不会超过并发限制。

就像您的情况一样,您的SQS队列可能一次接收2000条消息。 Lambda将同时运行1000个函数,而其余1000个将仅在以前的执行完成之后运行。

因此,我认为最好的解决方案是快速编写队列,以编写lambda函数来一次处理多个消息并将批大小更改为10。

答案 1 :(得分:0)

Michael是正确的,正如AWS的文件所述

  

随着消息涌入队列的数量增加,AWS Lambda会自动扩大轮询活动,直到并发功能执行数达到1000,帐户并发限制或(可选)功能并发限制(以较低者为准)。 Amazon Simple Queue Service支持初始突发5次并发函数调用,并提高了每分钟60次并发调用的并发性。

例如,有1000条消息一次到达队列, 在第一分钟内将只处理5个。

第二分钟将同时运行65个lambda ...如此

这非常慢且引人注目,特别是在您的函数长时间运行的情况下