Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про RabbitMQ: rabbitmq, message broker

Что такое DLQ в RabbitMQ

Этот вопрос проверяет понимание концепции "мертвой буквы" (Dead Letter) в RabbitMQ, которая используется для обработки сообщений, которые не могут быть доставлены или обработаны.

Короткий ответ

DLQ (Dead Letter Queue) — это специальная очередь в RabbitMQ, куда попадают сообщения, которые не были доставлены по разным причинам. Это может произойти, если сообщение было отклонено потребителем, истек его срок жизни или оно превысило лимит повторных доставок. DLQ помогает анализировать проблемные сообщения, не теряя их и не блокируя основную очередь.

Длинный ответ

DLQ — это паттерн обработки ошибочных сообщений в системах обмена сообщениями.

Причины попадания сообщения в DLQ:

  • Сообщение отрицательно подтверждено (NACK) потребителем с флагом requeue: false.

  • Истек TTL (Time To Live) у самого сообщения или у очереди, в которой оно находилось.

  • Превышен лимит длины очереди, и новое сообщение вытесняет старое.

  • Сообщение не может быть маршрутизировано (при использовании обменника Dead Letter).

Как настроить DLQ:

  1. Создается очередь-получатель для "мертвых" писем (например, my-queue.dlq).

  2. При объявлении основной очереди (my-queue) задаются аргументы, связывающие ее с DLQ.

Пример настройки с использованием библиотеки amqplib:

// Псевдокод/логика настройки
const args = {
  'x-dead-letter-exchange': '', // Используем обменник по умолчанию
  'x-dead-letter-routing-key': 'my-queue.dlq' // Маршрут к DLQ
};

// Объявляем основную очередь с аргументами
channel.assertQueue('my-queue', { durable: true, arguments: args });

// Объявляем DLQ
channel.assertQueue('my-queue.dlq', { durable: true });

Когда использовать:

  • Для отладки сообщений, которые вызывают ошибки у потребителя.

  • Для реализации повторных попыток обработки (можно позже забрать сообщение из DLQ и обработать снова).

  • Для предотвращения потери данных при сбоях.

Вывод: DLQ — это важный механизм для создания отказоустойчивых систем, который изолирует проблемные сообщения и упрощает диагностику ошибок.

  • Аватар

    Node.js Guru

    Demetra

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    3

  • Сложность:

    8

Навыки

  • RabbitMQ

    RabbitMQ

Ключевые слова

#rabbitmq

#message broker

Подпишись на Node.js Developer в телеграм

  • Аватар

    Node.js Guru

    Demetra

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.