PRO

Что такое dead letter queue?

Dead letter queue, или очередь неуспешных сообщений, хранит задачи и сообщения, которые не удалось обработать обычным способом: после превышения числа попыток, истечения срока жизни или отклонения получателем. Она не исправляет ошибку автоматически, но не даёт проблемному сообщению бесконечно блокировать основную очередь.
Подробный ответ

Зачем нужна очередь неуспешных сообщений

Некоторые сообщения не могут быть обработаны повторно: например, в них неверный формат, отсутствуют необходимые данные или есть постоянная ошибка в коде. Если бесконечно возвращать такое сообщение в основную очередь, оно будет создавать нагрузку и скрывать проблему среди обычных задач.

Как работает

Main queue
  |
  | обработка не удалась
  v
Retry queue
  |
  | превышен лимит попыток
  v
Dead letter queue
  |
  v
Monitoring and manual analysis

Когда сообщение попадает в такую очередь

  • превышено число повторных попыток;

  • истёк срок жизни сообщения;

  • сообщение отклонено получателем без возврата в основную очередь;

  • маршрут или очередь больше не существуют, если брокер поддерживает такую обработку.

Что делать с сообщениями из DLQ

  1. Настроить метрики и оповещение при появлении сообщений.

  2. Проанализировать причину: временная ошибка, неверные данные, ошибка кода или конфигурации.

  3. Исправить первопричину.

  4. При необходимости повторно отправить исправленные сообщения в рабочую очередь.

  5. Удалить сообщения только после анализа и принятого решения.

RabbitMQ

RabbitMQ поддерживает отдельные механизмы для перенаправления неуспешных сообщений через обменник неуспешных сообщений. Это позволяет автоматически направлять сообщения в специальную очередь после заданных условий.

Важные правила

  • DLQ должна иметь ограниченный доступ и понятный срок хранения;

  • нужны метрики количества и возраста сообщений;

  • повторная отправка должна быть безопасной и идемпотентной;

  • DLQ не заменяет исправление основной причины ошибки.

Как ответить на собеседовании

Dead letter queue — отдельная очередь для сообщений, которые не удалось обработать после заданных попыток или из-за постоянной ошибки. Она предотвращает бесконечные повторы и позволяет сохранить проблемные данные для анализа. Я настраиваю мониторинг DLQ, разбираю причину, исправляю систему и только потом безопасно повторяю нужные сообщения.

Оцени свой прогресс

Честно оцени своё понимание этого вопроса, чтобы мы могли построить твой учебный трек максимально эффективно.
Читать в блоге