在 AWS Lambda 中动态更改 SQS 消息可见性超时

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

我有一个由 Amazon SQS 队列触发的 AWS Lambda 函数。对于某些消息,我需要在处理它们之前延迟处理特定的时间。但是,我不确定如何在 Lambda 执行上下文中实现此目的。

我的批次中没有消息。

当从 Lambda 外部的 Python 脚本轮询队列时,我可以使用以下方法更改特定消息的可见性超时:

sqs.change_message_visibility(
   QueueUrl=queue_url,
   ReceiptHandle=receipt_handle,
   VisibilityTimeout=20
)
  1. 如何在 SQS 触发的 Lambda 函数中实现类似的延迟机制?
  2. 是否可取/我可以直接在 Lambda 中使用 boto3 来更改单个消息的可见性超时吗?
  3. 我是否应该为所有消息设置全局可见性超时,并在收到无法立即处理的消息时抛出异常,以便 lambda 在可见性超时后重试
amazon-web-services aws-lambda amazon-sqs
1个回答
0
投票

向 Amazon SQS 队列发送消息时,您可以指定

DelaySeconds
。我不能 100% 确定这将与设置为 Lambda 函数触发器的 SQS 队列一起使用,所以尝试一下,让我们知道会发生什么。

如果您的目标是在发送消息后修改超时,则这是不可能的,因为您无法有选择地接收消息。

首选方法是

对需要不同延迟的消息使用不同的 SQS 队列。 注意,

VisibilityTimeout

是一种处理失败的机制。它不应该被用作“延迟”消息处理的方式。

    

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