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.