gpt4 book ai didi

amazon-web-services - 将 SQS 与/Dead letter 和 Lambda 一起使用时,为什么在 lambda 因运行时异常而失败后消息仍保持 "in flight"5 分钟?

转载 作者:行者123 更新时间:2023-12-05 02:51:47 24 4
gpt4 key购买 nike

当使用带有死信和 Lambda 的 SQS 时,为什么消息在 lambda 失败并带有运行时异常后保持“飞行中”5 分钟?

我创建了 3 个资源

MyQueue(配置为将无法送达的消息发送到 MyQueueDLQ。默认可见性超时:30 秒)

MyQueueDLQ

Lambda(重试次数设置为 0,超时 30 秒)

出于某种原因,我希望(可能是因为缺乏理解)在我的 lambda 失败时,死信队列会在失败后不久接收消息。 (而不是几分钟后)。

我怎样才能确保死信队列以尽可能快的方式获取消息,以便任何响应死信队列消息的东西都不会不必要地等待几分钟?

注意:我故意在 lambda 中抛出一个运行时异常来测试它,以便我了解这一切是如何工作的。

我的目标是确保消息尽快进入死信队列。 5 分钟是我能做的最好的吗?

更新 1:我将 lambda 的超时设置为 5 秒,队列的超时设置为 25 秒,现在消息到达 DLQ 大约需要 1 分 40 秒.这仍然不符合我的期望。消息不应该在 25 秒内到达 DLQ 吗?

更新 2:所以今天我在底部窗口的 AWS Explorer SQS 队列上发现了一个小信息图标。这可能很好地描述了我所看到的 enter image description here

最佳答案

当您的 lambda 从 MyQueue 接收到消息时,这些消息将进入隐身模式,在该模式下,同样读取同一队列的其他人将看不到它。

通常,当您的函数成功处理消息时,lambda 服务会自动从队列中删除消息。然而,如果这没有发生,则该消息在剩余的隐形时间内保持隐形。然后当它再次可见时,lambda 服务可能会再次重试处理同一消息。如果重试次数已用尽,消息将转到 DLQ。

关于此的更多信息是 here :

If a message fails to be processed multiple times, Amazon SQS can send it to a dead-letter queue. When your function returns an error, Lambda leaves it in the queue. After the visibility timeout occurs, Lambda receives the message again. To send messages to a second queue after a number of receives, configure a dead-letter queue on your source queue.

关于amazon-web-services - 将 SQS 与/Dead letter 和 Lambda 一起使用时,为什么在 lambda 因运行时异常而失败后消息仍保持 "in flight"5 分钟?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63023108/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com