Что важно предусмотреть при проектировании dead letter queue?
- Как организовать разбор очереди недоставленных?
В DLQ кладут сообщение с метаданными сбоя (причина, стек, попытки, исходный топик и offset, время); у DLQ есть владелец и алерт; есть продуманное переигрывание после исправления причины.
- Автоматический возврат без исправления причины — бесконечный круг
- Срок хранения DLQ больше, чем время на разбор
- Переигрывание идемпотентно
А ещё Растущая DLQ без внимания — тихая потеря данных
Подробно
Самая частая ошибка — завести DLQ и забыть о ней: через полгода там миллион сообщений, никто не знает, что с ними делать, и часть данных потеряна безвозвратно. Поэтому непустая DLQ должна порождать алерт, у неё должен быть ответственный, а каждое сообщение — нести контекст: исходный топик и смещение, стектрейс или код ошибки, счётчик попыток, идентификатор трассировки. Возврат в обработку делают отдельной осознанной операцией после устранения причины, причём повторная обработка обязана быть идемпотентной. Немедленный автоматический возврат просто воспроизводит ту же ошибку по кругу.
Что хотят услышать
- Метаданные в DLQ.
- Владелец, алерт, процесс разбора.
- Переигрывание после исправления.
Частые ошибки
- Складывать в DLQ только тело сообщения без контекста ошибки.
- Не мониторить DLQ и обнаруживать потери спустя месяцы.
Проверьте себя
Несколько верных вариантов. Подумайте, потом откройте ответ.
Показать варианты и ответ
- ✓Сохранять причину сбоя, число попыток, исходный топик и время
- ✓Назначить владельца и алерт на непустую DLQ
- ✓Предусмотреть возврат сообщений в обработку после исправления
- ✗Настроить автоматический возврат сообщений в основной топик сразу после их попадания в DLQ
Что спросят дальше
- Как безопасно вернуть сообщения из DLQ в обработку?
- Что делать, если в DLQ попали сообщения из-за общей аварии зависимости?
Разбор темы
- Retries, DLQ и идемпотентность
Что повторять и почему не всё, backoff/jitter, non-blocking retry, дизайн DLQ и redrive, идемпотентность как фундамент.
Связанные вопросы
Разбор собеседования с sotto
После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.