Получить доступ

Что важно предусмотреть при проектировании dead letter queue?

MiddleРетраи, DLQ и идемпотентность
Ещё спрашивают так:
  • Как организовать разбор очереди недоставленных?
Коротко

В DLQ кладут сообщение с метаданными сбоя (причина, стек, попытки, исходный топик и offset, время); у DLQ есть владелец и алерт; есть продуманное переигрывание после исправления причины.

  • Автоматический возврат без исправления причины — бесконечный круг
  • Срок хранения DLQ больше, чем время на разбор
  • Переигрывание идемпотентно

А ещё Растущая DLQ без внимания — тихая потеря данных

Так подсказку видит пользователь sotto на живом собеседовании — за пару секунд, пока вы думаете вслух.

Подробно

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

Что хотят услышать

  • Метаданные в DLQ.
  • Владелец, алерт, процесс разбора.
  • Переигрывание после исправления.

Частые ошибки

  • Складывать в DLQ только тело сообщения без контекста ошибки.
  • Не мониторить DLQ и обнаруживать потери спустя месяцы.

Проверьте себя

Несколько верных вариантов. Подумайте, потом откройте ответ.

Показать варианты и ответ
  • ✓Сохранять причину сбоя, число попыток, исходный топик и время — иначе разобрать содержимое DLQ невозможно
  • ✓Назначить владельца и алерт на непустую очередь: DLQ без наблюдения превращается в свалку
  • ✓Предусмотреть механизм возврата сообщений в обработку после исправления причины
  • ✗Настроить автоматический возврат сообщений в основной топик сразу после попадания в DLQ

Что спросят дальше

  • Как безопасно вернуть сообщения из DLQ в обработку?
  • Что делать, если в DLQ попали сообщения из-за общей аварии зависимости?

Разбор темы

Связанные вопросы

Закрытая бета

Подсказки на собеседовании — в реальном времени

sotto слышит вопрос интервьюера и показывает короткий ответ и план, как в блоке «Коротко». Оставьте контакт — пришлём доступ и промокод.

  • Промокод на 2 часа — сверх пробных 30 минут
  • Программа для Windows — скачать сразу, войти — через Яндекс ID или VK ID
  • Прямая связь с разработчиком: что улучшить — сделаем