BA & SA | 10000 Interview questions: post #12275 — TG.ME

☀Объяснение:

В брокерах сообщений (RabbitMQ, Kafka, SQS) потребитель может упасть при обработке конкретного сообщения из-за ошибки в данных (например, некорректный JSON, отсутствие обязательного поля). Если настроить автоматические повторные попытки, это сообщение будет циркулировать бесконечно, блокируя обработку других сообщений (особенно в очередях с гарантией порядка). Это приводит к простою всей системы.

Что такое Dead Letter Queue (DLQ)?
DLQ — это специальная очередь (или топик), куда направляются сообщения, которые не удалось обработать после нескольких попыток (например, 3). Механизм работает так:
Сообщение попадает в основную очередь.
Потребитель пытается обработать его N раз (например, 3) с увеличивающейся задержкой (exponential backoff).
После исчерпания попыток сообщение автоматически перемещается в DLQ.
Основная очередь продолжает обрабатывать новые сообщения без блокировки.
Администратор или отдельный сервис анализирует DLQ, исправляет данные и повторно отправляет сообщение в основную очередь.

Сравнение с другими вариантами:
A (Увеличение потребителей) – не помогает, так как все потребители будут получать одно и то же «плохое» сообщение и падать.
B (Транзакционная запись) – обеспечивает атомарность, но не решает проблему изоляции ошибочных сообщений.
D (Автоматический повтор) – полезен для временных сбоев, но бесполезен для ошибок в данных; повтор будет бесконечным, пока очередь не заблокируется.

Реальный пример:
В сервисе заказов при интеграции со сторонним API иногда приходят заказы с некорректным форматом адреса. Без DLQ такие заказы «зависали» в очереди и блокировали обработку всех остальных. Внедрение DLQ позволило перемещать проблемные заказы в отдельную очередь, где их вручную правили операторы, а основной поток заказов обрабатывался без задержек.

Что должен зафиксировать аналитик:
«Для каждой критической очереди должна быть настроена Dead Letter Queue».
«Количество повторных попыток — не более 3, с экспоненциальной задержкой».
«Предусмотреть мониторинг DLQ и алертинг при накоплении сообщений».

Вывод: DLQ — это обязательный паттерн для отказоустойчивой обработки сообщений, позволяющий изолировать проблемные данные и не останавливать основной бизнес-процесс.
July 9, 2026 601 2