Вопрос проверяет знание стандартных инструментов Spring для интеграции с Apache Kafka, что необходимо для построения событийно-ориентированных микросервисов.
Spring Kafka — это модуль Spring, который предоставляет высокоуровневую абстракцию для работы с Apache Kafka. Он позволяет разработчикам легко отправлять и получать сообщения, используя знакомые шаблоны Spring, такие как шаблон проектирования 'Шаблонный метод' и инверсия управления.
KafkaTemplate — это основной класс для отправки сообщений в Kafka. Он инкапсулирует создание и настройку KafkaProducer и предоставляет удобные методы для отправки сообщений в топики. Пример использования:
@Autowired
private KafkaTemplate<String, String> kafkaTemplate;
public void sendMessage(String topic, String message) {
kafkaTemplate.send(topic, message);
}Аннотация @KafkaListener используется для создания слушателей сообщений. Она позволяет методам быть вызванными при получении сообщения из указанного топика. Пример:
@KafkaListener(topics = "myTopic")
public void listen(String message) {
System.out.println("Received: " + message);
}Этот класс управляет жизненным циклом слушателей. Он настраивает потребителей, обрабатывает ошибки и управляет параллелизмом. Обычно настраивается через KafkaListenerContainerFactory.
Spring Kafka предоставляет мощные и простые в использовании инструменты для интеграции с Kafka, что делает его идеальным выбором для микросервисных архитектур, где требуется надёжная асинхронная передача сообщений.