kafka java生产者_kafka生产者、消费者java示例

importjava.util.HashMap;importjava.util.List;importjava.util.Map;importjava.util.Properties;importkafka.consumer.ConsumerConfig;importkafka.consumer.ConsumerIterator;importkafka.consumer.KafkaStream;importkafka.javaapi.consumer.ConsumerConnector;public class MyConsumer extendsThread{//消费者连接

private finalConsumerConnector consumer;//要消费的话题

private finalString topic;publicMyConsumer(String topic) {

consumer=kafka.consumer.Consumer

.createJavaConsumerConnector(createConsumerConfig());this.topic =topic;

}//配置相关信息

private staticConsumerConfig createConsumerConfig() {

Properties props= newProperties();//props.put("zookeeper.connect","localhost:2181,10.XX.XX.XX:2181,10.XX.XX.XX:2181");//配置要连接的zookeeper地址与端口//The ‘zookeeper.connect’ string identifies where to find once instance of Zookeeper in your cluster.//Kafka uses ZooKeeper to store offsets of messages consumed for a specific topic and partition by this Consumer Group

props.put("zookeeper.connect","localhost:2181");//配置zookeeper的组id (The ‘group.id’ string defines the Consumer Group this process is consuming on behalf of.)

props.put("group.id", "0");//配置zookeeper连接超时间隔//The ‘zookeeper.session.timeout.ms’ is how many milliseconds Kafka will wait for//ZooKeeper to respond to a request (read or write) before giving up and continuing to consume messages.

props.put("zookeeper.session.timeout.ms","10000");//The ‘zookeeper.sync.time.ms’ is the number of milliseconds a ZooKeeper ‘follower’ can be behind the master before an error occurs.

props.put("zookeeper.sync.time.ms", "200");//The ‘auto.commit.interval.ms’ setting is how often updates to the consumed offsets are written to ZooKeeper.//Note that since the commit frequency is time based instead of # of messages consumed, if an error occurs between updates to ZooKeeper on restart you will get replayed messages.

props.put("auto.commit.interval.ms", "1000");return newConsumerConfig(props);

}public voidrun(){

Map topickMap = new HashMap();

topickMap.put(topic,1);

Map>> streamMap =consumer.createMessageStreams(topickMap);

KafkaStreamstream = streamMap.get(topic).get(0);

ConsumerIterator it =stream.iterator();

System.out.println("*********Results********");while(true){if(it.hasNext()){//打印得到的消息

System.err.println(Thread.currentThread()+" get data:" +newString(it.next().message()));

}try{

Thread.sleep(1000);

}catch(InterruptedException e) {

e.printStackTrace();

}

}

}public static voidmain(String[] args) {

MyConsumer consumerThread= new MyConsumer("mykafka");

consumerThread.start();

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值