package com.bizzbee.spark.kafka;
import java.io.IOException;
import java.time.Duration;
import java.util.Arrays;
import java.util.Collection;
import java.util.Properties;
import org.apache.kafka.clients.consumer.Consumer;
import org.apache.kafka.clients.consumer.ConsumerRecord;
import org.apache.kafka.clients.consumer.ConsumerRecords;
import org.apache.kafka.clients.consumer.KafkaConsumer;
public class SimpleKafkaConsumer {
public static void main(String[] args) {
Properties props = new Properties();
//集群地址,多个地址用","分隔
//因为生产者像三个broker生产,所以这边写93,94,95都行
props.put("bootstrap.servers","spark:9095");
//设置消费者的group id
props.put("group.id", "group1");
//如果为真,consumer所消费消息的offset将会自动的同步到zookeeper。如果消费者死掉时,由新的consumer使用继续接替
props.put("enable.auto.commit", "true");
//consumer向zookeeper提交offset的频率
props.put("auto.commit.interval.ms", "1000");
props.put("session.timeout.ms", "30000");
//反序列化
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<String, String>(props);
// 订阅topic,可以为多个用,隔开,此处订阅了"test-partition-1", "test"这两个主题
consumer.subscribe(Arrays.asList("bizzbee_topic", "bizzbee-replicated-topic"));
//持续监听
while(true){
//poll频率
ConsumerRecords<String,String> consumerRecords = consumer.poll(Duration.ofMillis(100));
for(ConsumerRecord<String,String> consumerRecord : consumerRecords){
System.out.println("bizzbee-replicated-topic" + consumerRecord.value());
}
}
}
}
内容来源于网络,如有侵权,请联系作者删除!