Java Kafka 测试demo实现
1. 流程概述
下面是实现Java Kafka测试demo的整个流程,使用表格展示每个步骤的具体内容。
步骤 | 描述 |
---|---|
1 | 创建Producer实例并配置相关属性 |
2 | 创建消息实例并设置相应的内容 |
3 | 发送消息到指定的Topic |
4 | 创建Consumer实例并配置相关属性 |
5 | 订阅指定的Topic |
6 | 从Topic中消费消息 |
7 | 关闭Producer和Consumer实例 |
下面将详细介绍每个步骤需要做什么,包括相应的代码和注释。
2. 代码实现
2.1 创建Producer实例并配置相关属性
创建一个Kafka Producer实例,配置相关属性,比如Kafka集群的地址、Key和Value的序列化方式等。
// 创建Producer配置
Properties props = new Properties();
props.put("bootstrap.servers", "localhost:9092"); // Kafka集群的地址
props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer"); // Key的序列化方式
props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer"); // Value的序列化方式
// 创建Producer实例
KafkaProducer<String, String> producer = new KafkaProducer<>(props);
2.2 创建消息实例并设置相应的内容
创建一个消息实例,并设置相应的内容,比如Topic、Key和Value等。
// 创建消息实例
ProducerRecord<String, String> record = new ProducerRecord<>("my-topic", "key", "value");
2.3 发送消息到指定的Topic
使用Producer实例将消息发送到指定的Topic。
// 发送消息到指定的Topic
producer.send(record);
2.4 创建Consumer实例并配置相关属性
创建一个Kafka Consumer实例,配置相关属性,比如Kafka集群的地址、Key和Value的反序列化方式等。
// 创建Consumer配置
Properties props = new Properties();
props.put("bootstrap.servers", "localhost:9092"); // Kafka集群的地址
props.put("key.deserializer", "org.apache.kafka.common.serialization.StringDeserializer"); // Key的反序列化方式
props.put("value.deserializer", "org.apache.kafka.common.serialization.StringDeserializer"); // Value的反序列化方式
props.put("group.id", "my-group"); // Consumer组的ID
// 创建Consumer实例
KafkaConsumer<String, String> consumer = new KafkaConsumer<>(props);
2.5 订阅指定的Topic
使用Consumer实例订阅指定的Topic。
// 订阅指定的Topic
consumer.subscribe(Collections.singletonList("my-topic"));
2.6 从Topic中消费消息
使用Consumer实例从Topic中消费消息。
while (true) {
// 从Topic中拉取消息
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());
}
}
2.7 关闭Producer和Consumer实例
在程序结束时,需要关闭Producer和Consumer实例以释放资源。
// 关闭Producer实例
producer.close();
// 关闭Consumer实例
consumer.close();
3. 类图
下面是Java Kafka测试demo的类图,使用mermaid语法中的classDiagram标识出来:
classDiagram
class KafkaProducer {
<<interface>>
+send(ProducerRecord)
+close()
}
class KafkaConsumer {
<<interface>>
+subscribe(List<String>)
+poll(Duration)
+close()
}
class ProducerRecord {
-topic: String
-key: String
-value: String
+getTopic(): String
+getKey(): String
+getValue(): String
}
class ConsumerRecord {
-offset: long
-key: String
-value: String
+getOffset(): long
+getKey(): String
+getValue(): String
}
4. 甘特图
下面是Java Kafka测试demo的甘特图,使用mermaid语法中的gantt标识出来:
gantt
dateFormat YYYY-MM-DD
title Java Kafka测试demo甘特图
section 生产者
创建Producer实例并配置属性 : 2022