Выбор ответа Senior Kafka в Spring обновлено
Блокирующие повторы
Вопрос
DefaultErrorHandler с FixedBackOff(30000, 10) повторяет сообщение при ошибке внешнего сервиса. Что происходит с остальными сообщениями этой партиции?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Ждут: пока одно сообщение ретраится, партиция стоит. Повтор через DefaultErrorHandler блокирующий: контейнер возвращает позицию на сбойное сообщение, и следующие в партиции не читаются, зато порядок сохраняется.
Варианты ответа
- Обрабатываются параллельно в других потоках контейнера
- Ждут: пока одно сообщение ретраится, партиция стоитправильный ответ
- Сразу уходят в DLT, чтобы не задерживать очередь
- Обрабатываются другим потребителем этой же группы
Разбор
Повтор через DefaultErrorHandler блокирующий: контейнер возвращает позицию на сбойное сообщение, и следующие в партиции не читаются, зато порядок сохраняется. Долгие паузы ещё и рискуют превысить max.poll.interval.ms. Если порядок не критичен, используют неблокирующие повторы @RetryableTopic через retry-топики. Другой потребитель партицию не получит без ребалансировки.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.