kafka consumer demo 消费者

package com.ctcc.kafka.examples;




import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Properties;


import org.slf4j.Logger;
import org.slf4j.LoggerFactory;


import com.ctcc.utils.ConfigUtils;


import kafka.consumer.Consumer;
import kafka.consumer.ConsumerConfig;
import kafka.consumer.ConsumerIterator;
import kafka.consumer.KafkaStream;
import kafka.javaapi.consumer.ConsumerConnector;


/**
 * 消费者演示类
 * @author heaven
 *
 */
public class ConsumerDemo {
private static final Logger logger = LoggerFactory.getLogger(ConsumerDemo.class);

/**
* 定义consumer
*/
private final ConsumerConnector consumer;

/**
* 定义topic
*/
private final String topic;

/**
* 构造方法
* @param zookeeper
* @param groupId
* @param topic
*/
public ConsumerDemo(String topic) {
Properties props = new Properties();
//配置zookeeper连接
props.put("zookeeper.connect", ConfigUtils.getType("zookeeper.connect"));
//配置分组
props.put("group.id", ConfigUtils.getType("group.id"));
//连接zookeeper的超时时间
props.put("zookeeper.session.timeout.ms", ConfigUtils.getType("zookeeper.session.timeout.ms"));
// zkclient与zookeeper建立连接的最长等待时间
props.put("zookeeper.connection.timeout.ms", ConfigUtils.getType("zookeeper.connection.timeout.ms"));
// zookeeper和zookeeper leader同步时间
props.put("zookeeper.sync.time.ms", ConfigUtils.getType("zookeeper.sync.time.ms"));
// consumer向zookeeper提交offset值的时间
props.put("auto.commit.interval.ms", ConfigUtils.getType("auto.commit.interval.ms"));
consumer = Consumer.createJavaConsumerConnector(new ConsumerConfig(props));
this.topic = topic;
}


/**
* 消费消息的方法
*/
public void consumeMessage() {
Map<String, Integer> topicCount = new HashMap<String, Integer>();
// Define single thread for topic
topicCount.put(topic, new Integer(1));
Map<String, List<KafkaStream<byte[], byte[]>>> consumerStreams = consumer.createMessageStreams(topicCount);
List<KafkaStream<byte[], byte[]>> streams = consumerStreams.get(topic);
for (final KafkaStream stream : streams) {
ConsumerIterator<byte[], byte[]> consumerIte = stream.iterator();
while (consumerIte.hasNext()) {
System.out.println("begin consume:" + new String(consumerIte.next().message()));
}
}
if (consumer != null) {
consumer.shutdown();
}
}


/**
* 主方法
* @param args
*/
public static void main(String[] args) {
if (args == null || args.length == 0 ) {
logger.error("please input topic name!");
//System.exit(0);
args=new String[]{"wanghouda"};
}
String topic = args[0];
ConsumerDemo simpleHLConsumer = new ConsumerDemo(topic);
simpleHLConsumer.consumeMessage();
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值