Выбор ответа Senior Kafka в Spring обновлено

Блокирующие повторы

Вопрос

DefaultErrorHandler с FixedBackOff(30000, 10) повторяет сообщение при ошибке внешнего сервиса. Что происходит с остальными сообщениями этой партиции?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Ждут: пока одно сообщение ретраится, партиция стоит. Повтор через DefaultErrorHandler блокирующий: контейнер возвращает позицию на сбойное сообщение, и следующие в партиции не читаются, зато порядок сохраняется.

Варианты ответа

  1. Обрабатываются параллельно в других потоках контейнера
  2. Ждут: пока одно сообщение ретраится, партиция стоитправильный ответ
  3. Сразу уходят в DLT, чтобы не задерживать очередь
  4. Обрабатываются другим потребителем этой же группы

Разбор

Повтор через DefaultErrorHandler блокирующий: контейнер возвращает позицию на сбойное сообщение, и следующие в партиции не читаются, зато порядок сохраняется. Долгие паузы ещё и рискуют превысить max.poll.interval.ms. Если порядок не критичен, используют неблокирующие повторы @RetryableTopic через retry-топики. Другой потребитель партицию не получит без ребалансировки.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.

Термины по теме