Вопрос с собеседования · Брокеры сообщений

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

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

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

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

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

Подробно

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

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

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

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

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

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

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

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

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

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

Разбор темы

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

Партнёр платформы

Разбор собеседования с sotto

После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.

Разбор собеседования