> Что такое RabbitMQ dead letter exchange (Python)

Уровень: junior · Роль: backend · Язык: Python · Категория: Технические вопросы

Компании: MTS

Стек: Python

> Пример ответа

Dead Letter Exchange (DLX) - это механизм в RabbitMQ для обработки сообщений, которые не могут быть доставлены или обработаны в обычной очереди. Когда сообщение попадает в DLX, оно перенаправляется в специальную очередь (dead letter queue) для дальнейшего анализа или повторной обработки.

Сообщение становится "мертвым" в трех основных случаях:

  1. Сообщение отклонено потребителем с помощью basic.reject или basic.nack с параметром requeue=false.
  2. Истекло время жизни сообщения (TTL), и оно не было обработано.
  3. Достигнут лимит длины очереди (queue length limit), и сообщение удаляется из начала очереди.

Настройка DLX происходит на уровне очереди при ее объявлении. Например, в Python с помощью библиотеки pika:

PYTHON
import pika
connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
channel = connection.channel()
# Объявляем очередь для мертвых сообщений
channel.queue_declare(queue='dead_letter_queue', durable=True)
# Объявляем основную очередь с привязкой к DLX
args = {
'x-dead-letter-exchange': 'dlx_exchange',
'x-dead-letter-routing-key': 'dead_letter_routing'
}
channel.queue_declare(queue='main_queue', durable=True, arguments=args)
# Создаем exchange для DLX
channel.exchange_declare(exchange='dlx_exchange', exchange_type='direct')
channel.queue_bind(exchange='dlx_exchange', queue='dead_letter_queue', routing_key='dead_letter_routing')

После настройки все "мертвые" сообщения из main_queue будут автоматически перенаправляться в dead_letter_queue через exchange dlx_exchange. Это позволяет реализовать стратегии повторной обработки, логирования ошибок или отложенной обработки с помощью TTL.

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью