Этап 7 из 10 · ≈ 8 ч

Сообщения в Spring

Основа с Middle

Spring Kafka, Spring AMQP и Spring Cloud Stream.

Что важно знать

  • KafkaTemplate, @KafkaListener, DefaultErrorHandler, DLT.
  • Режимы подтверждения и транзакции Kafka в Spring.
  • RabbitTemplate, @RabbitListener, ack-режимы, повторы.
  • Cloud Stream — функции и биндинги, переносимость между брокерами.

Критерии освоения

Middle ≈ 8 ч

  • Пишет продюсер и потребитель Kafka на Spring Kafka с обработкой ошибок и DLT
  • Настраивает подтверждения и повторы в Spring AMQP
  • Объясняет, когда уместна абстракция Spring Cloud Stream

Практика. Реализовать обработку событий заказа на Spring Kafka с повторами, DLT и интеграционным тестом в Testcontainers.

Проверка знаний

Войдите, чтобы пройти тест: сданный тест отмечает тему пройденной на карте и в ИПР.

Вопросы с собеседований

Смотреть все
Что делает аннотация @KafkaListener?Junior

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

Полный разбор
Что важно задавать при отправке через KafkaTemplate?Middle

Задавать ключ (порядок и партиция по сущности), сериализатор и формат, обрабатывать результат отправки — она асинхронная; для надёжности — acks=all и идемпотентный продюсер (по умолчанию с Kafka 3).

Полный разбор
Как @KafkaListener связан с listener container и offset commit?Senior

@KafkaListener — метод, который вызывает listener container: контейнер крутит цикл poll() в своих потоках, вызывает метод для записей и коммитит offset по AckMode. По умолчанию BATCH — после обработки всей пачки из poll().

Полный разбор
Что означает подтверждение (ack) сообщения в RabbitMQ?Junior

Ack — сигнал брокеру, что сообщение обработано: до него сообщение считается невыполненным и при обрыве соединения вернётся в очередь другому потребителю.

Полный разбор
Для чего нужен RabbitTemplate в Spring AMQP?Middle

RabbitTemplate — основной способ отправки в Spring AMQP: convertAndSend(exchange, routingKey, payload) с конвертером сообщений (JSON через Jackson2JsonMessageConverter), плюс синхронный request-reply и получение.

Полный разбор
Как в Spring Kafka обычно строят retry и dead letter topic?Senior

Два способа: блокирующий — DefaultErrorHandler с BackOff и DeadLetterPublishingRecoverer (повторы на месте, партиция ждёт); неблокирующий — @RetryableTopic: запись уходит в retry-топики с задержкой, а партиция продолжает обрабатываться.

Полный разбор

Разборы темы

← Вся карта «Spring»

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

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

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

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