我们正在使用 Cucumber 对外部应用程序进行一些集成测试,我们在测试@KafkaListener. 我们设法使用 EmbeddedKafka 并将数据生成到其中。
但是消费者永远不会收到任何数据,我们也不知道发生了什么。
这是我们的代码:
生产者配置
@Configuration
@Profile("test")
public class KafkaTestProducerConfig {
private static final String SCHEMA_REGISTRY_URL = "schema.registry.url";
@Autowired
protected EmbeddedKafkaBroker embeddedKafka;
@Bean
public Map<String, Object> producerConfig() {
Map<String, Object> props = new HashMap<>();
props.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG,
embeddedKafka.getBrokersAsString());
props.put(SCHEMA_REGISTRY_URL, "URL");
props.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class);
props.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, KafkaAvroSerializer.class);
return props;
}
@Bean
public ProducerFactory<String, GenericRecord> producerFactory() {
return new DefaultKafkaProducerFactory<>(producerConfig());
}
@Bean
public KafkaTemplate<String, GenericRecord> kafkaTemplate() {
return new KafkaTemplate<>(producerFactory());
}
}
Run Code Online (Sandbox Code Playgroud)
消费者配置
@Configuration
@Profile("test")
@EnableKafka
public class KafkaTestConsumerConfig { …Run Code Online (Sandbox Code Playgroud) java apache-kafka spring-boot spring-kafka spring-kafka-test