为什么'reservedConcurrency'不限制并发机上消息的数量?

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

我试图限制并行运行的并发函数的数量。我的lambda的触发器是SQS队列中的消息,您可以在我的serverless.yml中看到:

  receiver:
    handler: src/receiver.handler
    timeout: 30
    events:
      - sqs:
          arn: ${queueArn}
          batchSize: 1   
    reservedConcurrency: 1

我使用“reservedConcurrency:1”将并发执行的数量限制为1.我在AWS UI中验证了函数'receiver'配置和'reserve concurrency'在那里也设置为1。

不知道我错过了什么,因为我仍然看到从我的日志和AWS SQS UI运行数百个执行。

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

SQS / Lambda集成不适用于低于5的保留并发。

如果在函数上配置保留并发,则至少设置5个并发执行,以减少Lambda调用函数时出现限制错误的可能性。

https://docs.aws.amazon.com/lambda/latest/dg/with-sqs.html

正在进行的消息不仅是Lambda函数当前正在处理的消息。它还包括由于Lambda函数上可用的并发性不足而导致失败并返回队列的消息 - 即使大多数尝试都将失败,它们也会在正在尝试的过程中处于正在运行状态。如果将保留的并发性设置为0,则应该发现所有处理都停止,但是仍有一些消息在运行,因为仍在尝试处理。

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