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