EmbeddedKafka是一个用于在Java应用程序中进行单元测试的工具。它允许你在测试环境中嵌入一个Kafka broker,从而模拟真实的Kafka环境,而无需依赖外部Kafka集群。这对于快速、可靠地进行单元测试非常有用。
EmbeddedKafka主要有两种类型:
原因:
解决方法:
Properties props = new Properties();
props.put("listeners", "PLAINTEXT://localhost:9093");
props.put("advertised.listeners", "PLAINTEXT://localhost:9093");
props.put("log.dirs", "/tmp/kafka-logs");
KafkaServer kafkaServer = new KafkaServer(new KafkaConfig(props));
kafkaServer.startup();
原因:
解决方法:
Properties producerProps = new Properties();
producerProps.put("bootstrap.servers", "localhost:9093");
producerProps.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");
producerProps.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");
Producer<String, String> producer = new KafkaProducer<>(producerProps);
producer.send(new ProducerRecord<>("test-topic", "key", "value"));
producer.close();
原因:
解决方法:
Properties consumerProps = new Properties();
consumerProps.put("bootstrap.servers", "localhost:9093");
consumerProps.put("group.id", "test-group");
consumerProps.put("key.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
consumerProps.put("value.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
KafkaConsumer<String, String> consumer = new KafkaConsumer<>(consumerProps);
consumer.subscribe(Arrays.asList("test-topic"));
while (true) {
ConsumerRecords<String, String> records = consumer.poll(Duration.ofMillis(100));
for (ConsumerRecord<String, String> record : records) {
System.out.printf("offset = %d, key = %s, value = %s%n", record.offset(), record.key(), record.value());
}
}
通过以上信息,你应该能够更好地理解和使用EmbeddedKafka进行单元测试。如果遇到其他问题,可以参考相关文档或社区资源进行进一步排查。
小程序云开发官方直播课(应用开发实战)
API网关系列直播
云+社区沙龙online第5期[架构演进]
云+社区技术沙龙[第14期]
Tencent Serverless Hours 第12期
腾讯云存储知识小课堂
开箱吧腾讯云
高校公开课
云+社区技术沙龙[第11期]
云+社区技术沙龙[第7期]
实战低代码公开课直播专栏
领取专属 10元无门槛券
手把手带您无忧上云