AWS,SQS,计算 10 条消息的 visabilityTimeout

AWS, SQS, calculate visabilityTimeout for 10 messages

我有代码:

val messageRequest = new ReceiveMessageRequest().withQueueUrl(queueUrl).withVisibilityTimeout(8000).withMaxNumberOfMessages(10)
val messages = sqs.receiveMessage(messageRequest).getMessages.asScala

我的 lambda 最多可以工作 13 分 33 秒(即 800 秒)

我一次从 SQS 接收 10 条消息

我想正确计算 VisibilityTimeout

我使用公式:

"lambda timeout"(800 秒)* MaxNumberOfMessages(10)= 8000 秒

每条消息 800 秒

1.我是否正确计算了 VisibilityTimeout?

2。 VisibilityTimeout 更改会影响计费吗?

可见性超时是 SQS 将消息 不可见 传递给一个消费者后,对任何消费者保持多长时间,等待该消费者处理并删除它。如果一条消息在传递后未被接收者在允许的 window 内从队列中删除,则它会再次可见并在可见性超时到期时再次传递。

在您描述的场景中,正确的值仍然是 800,因为可见性超时适用于每条消息,单独地,但同时开始 运行 并发。您的代码将在 800 秒后终止,并且消息需要在这段时间过去后再次可见。如果设置为 8000 秒,如果您的代码在 800 秒后终止,则消息将在超时到期前的额外 7200 秒内保持不可见状态。

可见性超时对计费没有直接影响。