KafkaConsumer解析
引言
前面几篇主要针对kafka生产者流程,介绍了主要的类和运作流程,大致流程清晰,有些细节不是很懂,所以一笔带过,水平有限,望读者见谅。
接下来从一个例子进入到kafka消费者的圈子,见识下这个圈子里形形色色的对象。
消费者的hello word
public class KafkaConsumerSimple {
public void consumer(){
String topic = "test";
Properties props = new Properties();
props.put("bootstrap.servers", "localhost:9092");
props.put("group.id", "lt");
props.put("key.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
props.put("value.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
KafkaConsumer<String, String> consumer = new KafkaConsumer<>(props);
consumer.subscribe(Collections.singletonList(topic));
while(true){
ConsumerRecords<String, String> records = consumer.poll(Duration.ZERO.plusSeconds(1));
for (ConsumerRecord<String, String> record : records) {
System.out.println("topic: " + record.topic() + " partition:" + record.partition() + " offset:" + record.offset() + " key:"

本文详细解析KafkaConsumer的poll方法,包括消费者Hello World、poll方法的使用和内部实现,以及幕后功臣pollForFetches的运作流程。强调KafkaConsumer的线程不安全性和异步数据获取策略。

3919

被折叠的 条评论
为什么被折叠?



