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

Чем неблокирующий повтор через отдельные retry-топики лучше повтора прямо в обработчике?

SeniorРетраи, DLQ и идемпотентностьKafka
Ещё спрашивают так:
  • Что такое retry-топики?
Коротко

Блокирующий повтор в обработчике держит партицию: одно проблемное сообщение задерживает все следующие. Retry-топики уносят сообщение на повтор с задержкой, а партиция продолжает обрабатываться.

  • Цепочка: retry-1m → retry-10m → DLQ
  • Цена — нарушение порядка для этого ключа
  • Для событий одной сущности порядок важен — останавливать ключ, а не партицию

А ещё Spring Kafka: @RetryableTopic

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

Подробно

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

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

  • Проблема блокирующего повтора.
  • Устройство retry-топиков.
  • Цена: порядок.

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

  • Ставить долгие блокирующие паузы внутри обработчика.
  • Забывать, что неблокирующий повтор ломает порядок обработки.

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

Один верный вариант. Подумайте, потом откройте ответ.

Показать варианты и ответ
  • ✓Ожидание в обработчике останавливает всю партицию — за сбойным сообщением стоят остальные; вынос в retry-топик освобождает основной поток
  • ✗Retry-топики гарантируют exactly-once доставку
  • ✗Повтор в обработчике вообще невозможен технически
  • ✗Retry-топики уменьшают объём хранимых данных

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

  • Как организовать нарастающие задержки между попытками?
  • Когда потеря порядка при повторе недопустима?

Разбор темы

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

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

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

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

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