我有代码:
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超时”(800秒)* MaxNumberOfMessages(10)= 8000秒
每封邮件800秒
1。我是否正确计算了VisibilityTimeout?
2。 VisibilityTimeout的更改会影响结算吗?
答案 0 :(得分:1)
可见性超时是指SQS将消息传递给任何消费者后,它将使其对任何消费者保持不可见的状态,等待该消费者对其进行处理和删除的时间。如果在允许的窗口内接收到消息的使用者没有将消息从队列中删除,则该消息将再次变得可见,并且在可见性超时到期时将再次发送。
在您描述的场景中,正确的值仍然是800,因为可见性超时分别应用于每条消息,但同时开始并同时运行。您的代码将在800秒后终止,并且经过该时间后,消息必须再次变为可见。如果设置为8000秒,则如果您的代码在800秒后终止,那么在超时到期之前,这些消息将在7200秒内全部不可见。
可见性超时对结算没有直接影响。