AWS SQS тайм-аут видимости действителен для одного сообщения или всех сообщений в опросе - PullRequest
1 голос
/ 28 января 2020

Я прохожу курс AWS и пытаюсь понять, как работает AWS SQS (Simple Queue Service). Я немного смущен тайм-аутом видимости. Я знаю, что тайм-аут видимости - это длительность обработки сообщения в течение.

Это модель

enter image description here

Как вы можете см. диаграмму, потребитель получит сообщение или сообщения и обработает сообщение или сообщения в течение тайм-аута видимости. Если сообщение или сообщения не будут обработаны в течение тайм-аута видимости, потребитель не получит или не обработает сообщение или сообщения, и сообщения останутся в очереди.

Следующее - мои заблуждения:

  1. Действителен ли тайм-аут видимости для всех сообщений в одном опросе? Или тайм-аут применяется к каждому сообщению отдельно? Например, потребитель опрашивает 5 сообщений одновременно. Если 2 из них не обработаны в течение тайм-аута, 2 из них отправляются обратно в очередь, а остальные три удаляются. Или все 5 сообщений обрабатываются в течение тайм-аута, и в случае сбоя любого из них все они возвращаются в очередь.

  2. Это мое второе замешательство. Как действует тайм-аут видимости? В это время потребитель начинает опрашивать сообщения и получать сообщения? Или это действительно для времени, когда потребитель начинает опрашивать сообщения и заканчивает sh обработку сообщений на стороне потребителя (например, сохранение сообщений в базе данных)?

1 Ответ

3 голосов
/ 28 января 2020

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

enter image description here

Чтобы сообщить SQS, что у вас полностью обработав сообщение SQS, вы удаляете сообщение из SQS, используя DeleteMessage . Если вы завершаете sh обработку только 3 из 5 сообщений, то вы удаляете только эти 3 сообщения из SQS.

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

...