Выбор ответа Middle Kafka в Spring обновлено
Ядовитое сообщение
Вопрос
В топик попало сообщение, которое не десериализуется. Потребитель без ErrorHandlingDeserializer. Что произойдёт?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Ошибка до слушателя, offset не сдвигается, сообщение читается снова. Десериализация происходит в poll, до вызова слушателя, и без обёртки это исключение не обрабатывается обычным путём, партиция застревает.
Варианты ответа
- Ошибка до слушателя, offset не сдвигается, сообщение читается сноваправильный ответ
- Сообщение молча пропускается, а offset сдвигается на следующее сообщение
- Kafka удаляет некорректное сообщение из партиции сама
- Слушатель получает null вместо объекта и обрабатывает его
Разбор
Десериализация происходит в poll, до вызова слушателя, и без обёртки это исключение не обрабатывается обычным путём, партиция застревает. ErrorHandlingDeserializer перехватывает ошибку и передаёт её обработчику ошибок контейнера, который отправит сообщение в DLT. Kafka сама ничего не удаляет, кроме как по retention.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.