我有代码:
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”(800sec)* MaxNumberOfMessages(10)= 8000秒
每封邮件800秒
1.我是否正确计算了VisibilityTimeout?
2. VisibilityTimeout更改会影响结算吗?
可见性超时是指SQS将消息传递给一个消费者后等待该消费者处理和删除消息时,消息对所有消费者不可见的持续时间。如果消息一旦被传递,就不会被允许的窗口内的消费者从队列中删除,那么它将再次可见,并且当可见性超时到期时将再次传递。
在您描述的方案中,正确的值仍为800,因为可见性超时单独应用于每条消息,但同时开始并同时运行。您的代码将在800秒后终止,并且当这段时间过去后,消息需要再次显示。如果设置为8000秒,如果您的代码在800秒后终止,那么在超时到期之前,这些消息将在7200秒内保持不可见状态。
可见性超时对计费没有直接影响。