Java Kafka 消费示例
Apache Kafka 是一个分布式流处理平台,它被广泛用于构建实时数据管道和流处理应用。在Kafka中,消息被分为生产者(Producer)和消费者(Consumer)。生产者将消息发送到Kafka集群中的topic,而消费者则从topic中读取消息。
本文将通过一个简单的Java示例来演示如何使用Kafka消费消息。
Kafka 消费流程
以下是Kafka消费消息的基本流程:
flowchart TD
A(创建Kafka消费者) --> B(订阅Topic)
B --> C(拉取消息)
C --> D(处理消息)
- 创建Kafka消费者
- 订阅指定的Topic
- 拉取消息
- 处理消息
Java代码示例
1. 创建Kafka消费者
首先,我们需要创建一个Kafka消费者。下面是一个简单的Kafka消费者示例:
import org.apache.kafka.clients.consumer.ConsumerConfig;
import org.apache.kafka.clients.consumer.KafkaConsumer;
import java.util.Properties;
Properties props = new Properties();
props.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9092");
props.put(ConsumerConfig.GROUP_ID_CONFIG, "test-group");
props.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, "org.apache.kafka.common.serialization.StringDeserializer");
props.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, "org.apache.kafka.common.serialization.StringDeserializer");
KafkaConsumer<String, String> consumer = new KafkaConsumer<>(props);
2. 订阅Topic
接下来,我们需要订阅一个指定的Topic:
consumer.subscribe(Arrays.asList("test-topic"));
3. 拉取消息
然后,我们可以通过poll()方法来拉取消息:
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());
}
4. 处理消息
最后,我们可以对消费到的消息进行处理。在上面的代码中,我们简单地打印出了消息的offset、key和value。
完整示例
下面是一个完整的Kafka消费者示例:
import org.apache.kafka.clients.consumer.ConsumerConfig;
import org.apache.kafka.clients.consumer.ConsumerRecords;
import org.apache.kafka.clients.consumer.KafkaConsumer;
import org.apache.kafka.clients.consumer.ConsumerRecord;
import java.time.Duration;
import java.util.Arrays;
import java.util.Properties;
public class KafkaConsumerExample {
public static void main(String[] args) {
Properties props = new Properties();
props.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9092");
props.put(ConsumerConfig.GROUP_ID_CONFIG, "test-group");
props.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, "org.apache.kafka.common.serialization.StringDeserializer");
props.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, "org.apache.kafka.common.serialization.StringDeserializer");
KafkaConsumer<String, String> consumer = new KafkaConsumer<>(props);
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());
}
}
}
}
总结
通过本文的示例,我们了解了如何使用Java来消费Kafka中的消息。Kafka消费者在实际应用中起着非常重要的作用,可以用于构建实时数据处理、日志收集等应用。
希望本文对您有所帮助,谢谢阅读!
pie
title Kafka消息消费
"处理消息" : 40
"拉取消息" : 30
"订阅Topic" : 20
"创建消费者" : 10
以上就是Java Kafka消费示例的详细介绍,希望对您有所帮助!如果有任何疑问或建议,欢迎留言讨论。感谢阅读!