AWS, SQS, рассчитать visabilityTimeout для 10 сообщений - PullRequest
0 голосов
/ 13 апреля 2019

У меня есть код:

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

Моя лямбда может работать максимум 13 минут 33 секунды (это 800 секунд)

Я принимаю 10 сообщений от SQS одновременно

Я хочу правильно рассчитать VisibilityTimeout

Я использую формулу:

«время ожидания лямбды» (800 с) * MaxNumberOfMessages (10) = 8000 с

800 секунд для каждого сообщения

1. Правильно ли я рассчитал VisibilityTimeout?

2. Влияет ли изменение VisibilityTimeout на выставление счетов?

1 Ответ

1 голос
/ 13 апреля 2019

Тайм-аут видимости - это то, как долго SQS будет хранить сообщение невидимым для любого потребителя после того, как оно будет доставлено одному потребителю, ожидая, пока этот потребитель обработает и удалит его.Если доставленное сообщение не было удалено из очереди потребителем, получившим его в разрешенном окне, оно снова станет видимым и будет доставлено снова, когда истечет время ожидания видимости.

В сценарии, который выописано правильное значение по-прежнему 800, потому что тайм-аут видимости применяется к каждому сообщению, индивидуально, но начинается в то же время и работает одновременно.Ваш код прекратит работу через 800 секунд, и сообщения должны снова стать видимыми по истечении этого промежутка времени.Если установлено значение 8000 секунд, если ваш код завершается через 800 секунд, все сообщения остаются невидимыми в течение дополнительных 7200 секунд до истечения времени ожидания.

Тайм-аут видимости не оказывает прямого влияния на выставление счетов.

...