Выбор ответа Middle Kafka в Spring обновлено
Ошибка отправки KafkaTemplate
Вопрос
Код вызывает kafkaTemplate.send(topic, key, event) и не использует результат. Брокер недоступен. Что увидит код?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Ничего сразу: ошибка придёт в непроверенную CompletableFuture. send кладёт запись в буфер продюсера и возвращает CompletableFuture<SendResult.
Варианты ответа
- Немедленное исключение KafkaException в месте вызова send
- Метод заблокируется навсегда до восстановления брокера
- Ничего сразу: ошибка придёт в непроверенную CompletableFutureправильный ответ
- Сообщение сохранится на диск и гарантированно отправится позже
Разбор
send кладёт запись в буфер продюсера и возвращает CompletableFuture<SendResult>. При недоступном брокере продюсер повторяет попытки до delivery.timeout.ms, а потом завершает future с ошибкой. Если результат не обработан, потеря незаметна. Метод может заблокироваться только до max.block.ms при заполненном буфере или отсутствии метаданных. Локального надёжного хранилища у продюсера нет, для гарантий нужен outbox.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.