intermediate

SQS

Буферизуйте асинхронную работу через managed-очереди: visibility timeout, dead-letter queue, идемпотентные consumers и семантика retry.

SQS буферизует асинхронную работу между Node.js-продюсерами и консьюмерами. Standard queue — best-effort порядок и at-least-once доставка; FIFO — порядок и exactly-once обработка внутри message group.

После получения сообщения visibility timeout скрывает его от других. Продлевайте timeout для долгих задач или удаляйте при успехе. После `maxReceiveCount` неудачные сообщения уходят в dead-letter queue для разбора и replay.

| Паттерн | Деталь | |---------|--------| | Идемпотентный handler | Повтор того же сообщения должен быть безопасен | | Long polling | `WaitTimeSeconds` снижает пустые receive | | DLQ | «Ядовитые» сообщения без блокировки очереди |

Типично для event-driven API: HTTP-handler кладёт job в очередь, worker на Lambda или ECS обрабатывает, статус — в DynamoDB или Postgres.

На интервью: настройка visibility timeout, лимиты throughput FIFO, partial batch failures с Lambda и ключи идемпотентности в Node.js workers.

Типовые ошибки: visibility короче длительности job — дубликаты; нет DLQ; exactly-once на standard queue; неограниченная глубина очереди без алarmов.

Компромисс — простое durable decoupling против отсутствия pub-sub fan-out (добавляйте SNS) и необходимости следить за poison messages.

Чеклист:

  • Visibility timeout под p99 времени обработки.
  • DLQ и мониторинг ApproximateAgeOfOldestMessage.
  • Идемпотентные consumers с хранилищем дедупликации.
  • Long polling для экономии и latency.