Yandex Cloud
  • Сервисы
  • Решения
  • Почему Yandex Cloud
  • Сообщество
  • Тарифы
  • Документация
  • Связаться с нами
Подключиться
Language / Region
© 2022 ООО «Яндекс.Облако»
Yandex Message Queue
  • Начало работы
    • Быстрый старт
    • Поддерживаемые инструменты
    • Примеры кода
      • Python
      • Node.js
      • PHP
      • Celery
      • JMS
      • Laravel
      • Terraform
      • Golang
  • Пошаговые инструкции
    • Обзор
    • Создание новой очереди сообщений
    • Отправка сообщений
    • Прием и удаление сообщений
    • Удаление очереди сообщений
    • Мониторинг процессов в очереди
  • Концепции
    • Обзор
    • Очереди сообщений
    • Сообщения
    • Дедупликация
    • Таймаут видимости
    • Long Polling
    • Dead Letter Queue
    • Отложенная доставка сообщений в очереди
    • Квоты и лимиты
    • Сравнение с Yandex Data Streams
  • Практические руководства
    • Конвертация видео в GIF на Python
  • Управление доступом
  • Правила тарификации
  • API Yandex Message Queue
    • Обзор
    • Queue
      • CreateQueue
      • DeleteQueue
      • GetQueueAttributes
      • GetQueueUrl
      • ListQueues
      • PurgeQueue
      • SetQueueAttributes
    • Message
      • ChangeMessageVisibility
      • ChangeMessageVisibilityBatch
      • DeleteMessage
      • DeleteMessageBatch
      • ReceiveMessage
      • SendMessage
      • SendMessageBatch
    • Типы данных
      • BatchResultErrorEntry
      • ChangeMessageVisibilityBatchRequestEntry
      • ChangeMessageVisibilityBatchResultEntry
      • DeleteMessageBatchRequestEntry
      • DeleteMessageBatchResultEntry
      • Message
      • MessageAttributeValue
      • SendMessageBatchRequestEntry
      • SendMessageBatchResultEntry
    • Стандартные ошибки
  • Публичные материалы
  • Вопросы и ответы
  1. Концепции
  2. Dead Letter Queue

Dead Letter Queue

Статья создана
Yandex Cloud
  • Политика перенаправления
  • Применение
    • Со стандартными очередями
    • С очередями FIFO

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

Если сообщение не удается считать из очереди после заданного количества попыток, то его можно перенаправить в DLQ. Количество попыток считывания и идентификатор DLQ определяются политикой перенаправления, установленной для очереди из которой будут перемещаться сообщения.

Политика перенаправления

Условия перенаправления сообщений в DLQ задаются политикой перенаправления.

Политика перенаправления настраивается с помощью атрибута RedrivePolicy в методах CreateQueue и SetQueueAttributes.

В атрибуте указываются DLQ, куда будут перемещаться сообщения, и параметр maxReceiveCount, определяющий максимальное количество попыток получения сообщения перед отправкой в DLQ. Когда значение параметра ReceiveCount у сообщения превышает значение maxReceiveCount, сообщение перенаправляется в DLQ. При перемещении в DLQ сообщение сохраняет свой идентификатор.

Применение

Со стандартными очередями

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

Если вам необходимо обрабатывать большое количество сообщений, среди которых часто попадаются те, которые не удается обработать потребителям, то используйте DLQ, чтобы не ждать окончания срока хранения дефектных сообщений, а убирать их из основной очереди после нескольких неудачных попыток обработки. Это позволит снизить затраты и уменьшить нагрузку на оборудование и виртуальные машины. Большое количество необработанных сообщений в стандартных очередях может замедлить работу ваших приложений.

Для стандартных очередей DLQ тоже должна быть стандартной очередью.

С очередями FIFO

При использовании DLQ с очередями FIFO может нарушиться порядок обработки сообщений. Если сообщение из группы не будет обработано, то прекратится обработка всей группы сообщений. Получатель может продолжить обработку это группы сообщений только после того, как дефектное сообщение будет успешно обработано. Убедитесь, что ваше приложение корректно обрабатывает все сообщения, иначе вся очередь FIFO может быть заблокирована из-за одного сообщения.

Для очереди FIFO DLQ тоже должна быть очередью FIFO.

Была ли статья полезна?

Language / Region
© 2022 ООО «Яндекс.Облако»
В этой статье:
  • Политика перенаправления
  • Применение
  • Со стандартными очередями
  • С очередями FIFO