【发布时间】:2019-11-25 17:01:23
【问题描述】:
如果使用 SQS 作为 Lambda 函数的事件源,有没有办法将“活动”消息的最大数量限制为 x。因此,假设有一个包含 1000 条消息的 SQS 队列,但我们不想尝试处理尽可能多的消息(最多默认并发限制 1000 条),我们只想同时处理最多 x 条消息。这显然意味着处理所有消息需要更多时间,但它会让我们有可能更好地控制例如写入数据库。
此外,如果无法处理消息(例如,由于 Lambda 函数中发生错误),是附加到队列末尾的消息(因此所有其他消息首先出现)还是存在一种在特定等待时间(可见性超时)后对它们进行优先排序的方法?
非常感谢
【问题讨论】:
-
听起来像批处理,带有 VSEM 输入或类似的东西。触发队列对此很困难,因为下游流程/应用程序可能无法扩展到 AWS lambda 并发的强大功能。我经历过这种情况,我们使用 cloudwatch cron 来触发 lambda worker,并设置它要获取的预定义消息数量。
-
@LostJon 谢谢,我会看看 Cloudwatch cron 以及它是如何工作的。我还在某处读到 Kinesis Data Streams 可能能够做这样的事情(而不是 SQS 队列),但还不确定。
标签: amazon-web-services aws-lambda amazon-sqs