Some time ago, I used Kafka to receive messages at work, so let’s just sort it out:
Properties props = new Properties(); props.put("zookeeper.connect", zkServer); props.put("group.id",groupId); //Use zk cluster management ConsumerConfig conf = new ConsumerConfig(props); kafka.javaapi.consumer.ConsumerConnector consumer = kafka.consumer.Consumer.createJavaConsumerConnector(conf); Map<String, Integer> topicCountMap = new HashMap<String, Integer>(); topicCountMap.put (topicId, 1); Map<String, List<KafkaStream<String, LogInfoBean>>> consumerMap = consumer.createMessageStreams(topicCountMap,new StringDecoder(new VerifiableProperties()), new DiggerEventDecoder()); List<KafkaStream<String,LogInfoBean>> streams = consumerMap.get(topicId); KafkaStream<String,LogInfoBean> stream = streams.get(0); ConsumerIterator<String,LogInfoBean> it = stream.iterator(); // will block the thread when there is no message while (it.hasNext()){ LogInfoBean msgBean = it.next().message(); String logMessage = msgBean.getMsg(); // process the received message //... }