初识kafka 之 消费者API
需求
创建一个消费者,消费Mytopic主题指定分区3中的数据。
实现代码
package com.lzh.kafka; import org.apache.kafka.clients.consumer.ConsumerConfig; import org.apache.kafka.clients.consumer.ConsumerRecord; import org.apache.kafka.clients.consumer.ConsumerRecords; import org.apache.kafka.clients.consumer.KafkaConsumer; import org.apache.kafka.common.TopicPartition; import org.apache.kafka.common.serialization.StringDeserializer; import java.time.Duration; import java.util.ArrayList; import java.util.Properties; // kafka消费者 API public class CustomConsumer { public static void main(String[] args) { // 0 配置 Properties properties = new Properties(); // 连接到服务器 properties.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG,"bigdata01:9092,bigdata02:9092"); // 反序列化 properties.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class.getName()); properties.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG,StringDeserializer.class.getName()); // 添加groupid,必须 properties.put(ConsumerConfig.GROUP_ID_CONFIG,"test"); // 1 创建一个消费者对象 KafkaConsumer<String, String> kafkaConsumer = new KafkaConsumer<String, String>(properties); // 2 订阅主题 // ArrayList<String> topics = new ArrayList<String>(); // topics.add("Mytopic"); // kafkaConsumer.subscribe(topics); // 注册要消费的主题(可以消费多个主题) // 订阅指定分区 3 ArrayList<TopicPartition> topicPartitions = new ArrayList<>(); topicPartitions.add(new TopicPartition("Mytopic",3)); kafkaConsumer.assign(topicPartitions); // 消费某个主题的某个分区数据 // 3 消费数据 // 一直获取消费数据 while (true){ ConsumerRecords<String, String> consumerRecords = kafkaConsumer.poll(Duration.ofSeconds(1)); for (ConsumerRecord<String, String> consumerRecord : consumerRecords) { System.out.println(consumerRecord); } } } }
结果

世风之狡诈多端,到底忠厚人颠扑不破;
末俗以繁华相尚,终觉冷淡处趣味弥长。
posted on 2022-04-15 15:29 Simple-Sir 阅读(114) 评论(0) 收藏 举报
浙公网安备 33010602011771号