Вы можете установить spring.kafka.bootstrap-servers = $ {spring.embedded.kafka.brokers} в вашем application.properties для теста, который должен работать. Он заполняется из EmbeddedKafka случайным портом, который был назначен при запуске.

ить FYI:пример работы с gitHub

Я искал в интернете и не смог найти работающего и простого примера встроенного теста Кафки.

Моя настройка:

Весенний ботинокмножественный@KafkaListener с разными темами в одном классеВстроенный Кафка для теста, который отлично запускаетсяТест с Kafkatemplate, который отправляет в тему, но@KafkaListener методы ничего не получают даже после огромного времени снаПредупреждения или ошибки не отображаются, в журналах только информационный спам от Kafka

Пожалуйста, помогите мне. Есть в основном переконфигурированные или слишком сильные примеры. Я уверен, что это можно сделать просто. Спасибо, парни!

@Controller
public class KafkaController {

    private static final Logger LOG = getLogger(KafkaController.class);

    @KafkaListener(topics = "test.kafka.topic")
    public void receiveDunningHead(final String payload) {
        LOG.debug("Receiving event with payload [{}]", payload);
        //I will do database stuff here which i could check in db for testing
    }
}

private static String SENDER_TOPIC = "test.kafka.topic";

@ClassRule
public static KafkaEmbedded embeddedKafka = new KafkaEmbedded(1, true, SENDER_TOPIC);

@Test
    public void testSend() throws InterruptedException, ExecutionException {

        Map<String, Object> senderProps = KafkaTestUtils.producerProps(embeddedKafka);

        KafkaProducer<Integer, String> producer = new KafkaProducer<>(senderProps);
        producer.send(new ProducerRecord<>(SENDER_TOPIC, 0, 0, "message00")).get();
        producer.send(new ProducerRecord<>(SENDER_TOPIC, 0, 1, "message01")).get();
        producer.send(new ProducerRecord<>(SENDER_TOPIC, 1, 0, "message10")).get();
        Thread.sleep(10000);
    }

Ответы на вопрос(0)

Ваш ответ на вопрос