package com.dnt.kafkademo; import kafka.consumer.Consumer; import kafka.consumer.ConsumerConfig; import kafka.consumer.ConsumerIterator; import kafka.consumer.KafkaStream; import kafka.javaapi.consumer.ConsumerConnector; import kafka.message.MessageAndMetadata; import java.io.IOException; import java.nio.charset.Charset; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Properties; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; /** * User: mzang * Date: 2015-04-02 * Time: 09:51 */ public class ConsumerDemo2 { private ExecutorService threadPool; private ConsumerConnector connector; private Charset charset = Charset.forName("utf8"); private void init() throws IOException { Properties props = new Properties(); props.load(ConsumerDemo.class.getClassLoader().getResourceAsStream("consumer.properties")); ConsumerConfig consumerConfig = new ConsumerConfig(props); final kafka.javaapi.consumer.ConsumerConnector connector = Consumer.createJavaConsumerConnector(consumerConfig); Map<String, Integer> topics = new HashMap<String, Integer>(); topics.put("risklogging.idimodellogdatavo", 1); Map<String, List<KafkaStream<byte[], byte[]>>> streams = connector.createMessageStreams(topics); List<KafkaStream<byte[], byte[]>> partitions = streams.get("topic1"); threadPool = Executors.newFixedThreadPool(9); for (KafkaStream<byte[], byte[]> stream : partitions) { final KafkaStream inner = stream; threadPool.execute(new Runnable() { public void run() { ConsumerIterator<byte[], byte[]> it = inner.iterator(); while (it.hasNext()) { MessageAndMetadata<byte[], byte[]> item = it.next(); String content = new String(item.message(), charset); System.out.println(content); } } }); } } public ConsumerDemo2() throws IOException { init(); } public static void main(String[] args) throws IOException { ConsumerDemo2 demo2 = new ConsumerDemo2(); } }