SQS FIFO队列,并触发lambda

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

我有一个 FIFO SQS, 和从该 SQS 触发的 lambda, lambda 触发器上的批量大小设置为 1, lambda 保留并发设置为 1。 并且 SQS 可见性超时设置为 2 分钟,作为处理 lambda 的最大时间。

当 2 条消息发送到队列时,一条接着一条, Lambda 由 1 条消息触发, 但第二条消息会延迟,直到可见性超时过去 - 2 分钟。 当新消息同时发送到队列时, 他们立即得到处理。

我希望实现的行为, 当 lambda 完成处理第一条消息时, 一个新的 lambda 实例将处理第二条消息。

我尝试将可见性超时更改为 0, 但由于 lambda 需要更长的时间来执行, 它一遍又一遍地处理相同的消息。

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

我理解这种行为, 发生这种情况是因为该消息具有单独的消息组 ID。保留并发数 = 1; 当消息被处理并在可见性超时之前完成时, 只有具有相同消息组ID的消息才能被立即处理。具有不同消息组 ID 的消息必须等待可见性超时过去。 我通过使用常量消息组 ID 解决了这个问题。

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