advanced

RabbitMQ dead-letter exchange

Route rejected, expired или overflowed messages в dead-letter exchange, чтобы failures были inspectable и recoverable.

Dead-letter exchange (DLX) принимает отклонённые сообщения, истёкшие по TTL или отброшенные из-за max-length. Настройте `x-dead-letter-exchange` и при необходимости `x-dead-letter-routing-key` на исходной очереди, чтобы сбои попадали в проверяемое место, а не исчезали.

DLX поддерживает retry-пайплайны, карантин для poison-сообщений и дашборды по объёму сбоев. Сохраняйте исходные метаданные маршрутизации и заголовки вроде `x-death` при проектировании replay-инструментов.

На интервью: нарисуйте main queue → DLX → inspection queue, назовите три причины dead-letter и опишите replay после исправления бага.

Типовые ошибки: DLX без consumer и тихим накоплением; replay без устранения причины; потеря контекстных заголовков при повторной публикации; один DLX и для retry, и для финального карантина.

Компромисс — гибкость против сложности: знайте, когда достаточно более простого пути.

Чеклист:

  • Привяжите DLX к очередям с путями сбоев.
  • Мониторьте глубину и возраст dead-letter.
  • Разделите retry DLX и финальный карантин.
  • Сохраняйте метаданные для диагностики и replay.