AWS SQS为10条消息计算visabilityTimeout

时间:2019-04-13 10:25:20

标签: amazon-web-services amazon-sqs billing

我有代码:

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的更改会影响结算吗?

1 个答案:

答案 0 :(得分:1)

可见性超时是指SQS将消息传递给任何消费者后,它将使其对任何消费者保持不可见的状态,等待该消费者对其进行处理和删除的时间。如果在允许的窗口内接收到消息的使用者没有将消息从队列中删除,则该消息将再次变得可见,并且在可见性超时到期时将再次发送。

在您描述的场景中,正确的值仍然是800,因为可见性超时分别应用于每条消息,但同时开始并同时运行。您的代码将在800秒后终止,并且经过该时间后,消息必须再次变为可见。如果设置为8000秒,则如果您的代码在800秒后终止,那么在超时到期之前,这些消息将在7200秒内全部不可见。

可见性超时对结算没有直接影响。