Sobes.tech
Назад к вопросам
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.