Вопрос с собеседования · Spring

Что делает аннотация @KafkaListener?

JuniorSpring KafkaKafka
Ещё спрашивают так:
  • Как читать сообщения Kafka в Spring?
Коротко

@KafkaListener(topics = "orders", groupId = "billing") объявляет обработчик: цикл poll(), десериализацию, вызов метода и коммит offset берёт на себя контейнер Spring Kafka.

  • Коммит — после обработки (по умолчанию после пачки)
  • Ошибки — DefaultErrorHandler: повторы, затем DLT
  • concurrency — число потребителей

А ещё Обработчик должен быть идемпотентным

Подробно

За аннотацией стоит контейнер слушателя: он ведёт цикл опроса брокера, разбирает сообщение в нужный тип, вызывает ваш метод и фиксирует позицию чтения после успешной обработки. Благодаря этому в коде остаётся только полезная логика. Отправкой занимается отдельный компонент — шаблон для публикации. Важная деталь для понимания поведения при сбоях: если метод бросил исключение, позиция не сдвигается, и сообщение будет получено снова, поэтому обработка должна выдерживать повторы.

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

  • Что делает аннотация и контейнер.

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

  • Считать, что аннотация занимается и отправкой сообщений.
  • Не учитывать повторную доставку при ошибке обработки.

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

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

Показать варианты и ответ
  • ✗Отправляет сообщения в указанный топик
  • ✓Делает метод обработчиком сообщений топика — потребителя поднимает фреймворк
  • ✗Создаёт топик при старте приложения с заданным числом партиций и реплик
  • ✗Регистрирует схему сообщения в реестре

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

  • Что произойдёт при исключении внутри обработчика?
  • Как число партиций ограничивает параллелизм обработки?

Разбор темы

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

Партнёр платформы

Разбор собеседования с sotto

После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.

Разбор собеседования