我有一个由 Amazon SQS 队列触发的 AWS Lambda 函数。对于某些消息,我需要在处理它们之前延迟处理特定的时间。但是,我不确定如何在 Lambda 执行上下文中实现此目的。
我的批次中没有消息。
当从 Lambda 外部的 Python 脚本轮询队列时,我可以使用以下方法更改特定消息的可见性超时:
sqs.change_message_visibility(
QueueUrl=queue_url,
ReceiptHandle=receipt_handle,
VisibilityTimeout=20
)
向 Amazon SQS 队列发送消息时,您可以指定
DelaySeconds
。我不能 100% 确定这将与设置为 Lambda 函数触发器的 SQS 队列一起使用,所以尝试一下,让我们知道会发生什么。
如果您的目标是在发送消息后修改超时,则这是不可能的,因为您无法有选择地接收消息。
首选方法是对需要不同延迟的消息使用不同的 SQS 队列。 注意,
VisibilityTimeout
是一种处理失败的机制。它不应该被用作“延迟”消息处理的方式。