Что такое dead letter queue?
Подробный ответ
Зачем нужна очередь неуспешных сообщений
Некоторые сообщения не могут быть обработаны повторно: например, в них неверный формат, отсутствуют необходимые данные или есть постоянная ошибка в коде. Если бесконечно возвращать такое сообщение в основную очередь, оно будет создавать нагрузку и скрывать проблему среди обычных задач.
Как работает
Main queue
|
| обработка не удалась
v
Retry queue
|
| превышен лимит попыток
v
Dead letter queue
|
v
Monitoring and manual analysisКогда сообщение попадает в такую очередь
превышено число повторных попыток;
истёк срок жизни сообщения;
сообщение отклонено получателем без возврата в основную очередь;
маршрут или очередь больше не существуют, если брокер поддерживает такую обработку.
Что делать с сообщениями из DLQ
Настроить метрики и оповещение при появлении сообщений.
Проанализировать причину: временная ошибка, неверные данные, ошибка кода или конфигурации.
Исправить первопричину.
При необходимости повторно отправить исправленные сообщения в рабочую очередь.
Удалить сообщения только после анализа и принятого решения.
RabbitMQ
RabbitMQ поддерживает отдельные механизмы для перенаправления неуспешных сообщений через обменник неуспешных сообщений. Это позволяет автоматически направлять сообщения в специальную очередь после заданных условий.
Важные правила
DLQ должна иметь ограниченный доступ и понятный срок хранения;
нужны метрики количества и возраста сообщений;
повторная отправка должна быть безопасной и идемпотентной;
DLQ не заменяет исправление основной причины ошибки.
Как ответить на собеседовании
Dead letter queue — отдельная очередь для сообщений, которые не удалось обработать после заданных попыток или из-за постоянной ошибки. Она предотвращает бесконечные повторы и позволяет сохранить проблемные данные для анализа. Я настраиваю мониторинг DLQ, разбираю причину, исправляю систему и только потом безопасно повторяю нужные сообщения.
Оцени свой прогресс