Назад к вопросам
МТС
Middle+
3
Как написать тест для Kafka (продюсер/консюмер)?
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
Для тестирования Kafka-продюсера и консюмера на Java часто используют библиотеку spring-kafka-test или EmbeddedKafka из Spring Kafka, которая позволяет поднять встроенный Kafka-брокер в памяти.
Пример простого теста с использованием EmbeddedKafka:
@SpringBootTest
@EmbeddedKafka(partitions = 1, topics = {"test-topic"})
public class KafkaIntegrationTest {
@Autowired
private KafkaTemplate<String, String> kafkaTemplate;
@Autowired
private ConsumerFactory<String, String> consumerFactory;
@Test
public void testSendReceive() throws Exception {
// Отправляем сообщение
kafkaTemplate.send("test-topic", "key1", "Hello Kafka");
// Создаем консюмера для проверки
Consumer<String, String> consumer = consumerFactory.createConsumer();
consumer.subscribe(Collections.singleton("test-topic"));
ConsumerRecords<String, String> records = KafkaTestUtils.getRecords(consumer);
assertThat(records.count()).isGreaterThan(0);
ConsumerRecord<String, String> record = records.iterator().next();
assertEquals("Hello Kafka", record.value());
consumer.close();
}
}
Такой подход позволяет проверить, что продюсер корректно отправляет сообщения, а консюмер их получает. Для unit-тестов можно мокать KafkaTemplate или Consumer, а для интеграционных — использовать EmbeddedKafka.