大数据系列之分布式发布订阅消息系统Kafka(三)Kafka的JAVA API

(pom.xml)

<dependencies>
        <dependency>
            <groupId>org.apache.kafka</groupId>
            <artifactId>kafka-clients</artifactId>
            <version>0.10.0.1</version>
        </dependency>
        <dependency>
            <groupId>org.apache.kafka</groupId>
            <artifactId>kafka_2.11</artifactId>
            <version>0.10.0.1</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.11</version>
        </dependency>
    </dependencies>

通过java API实现消息生产者,发送消息
---------------------------------------
    package com.hadoop.kafkademo.test;

    import org.junit.Test;

    import kafka.javaapi.producer.Producer;
    import kafka.producer.KeyedMessage;
    import kafka.producer.ProducerConfig;

    import java.util.HashMap;
    import java.util.Properties;

    /**
     * Created by Administrator on 2017/3/31.
     */
    public class TestProducer {
        @Test
        public void testSend(){
            Properties props = new Properties();
            //broker列表
            props.put("metadata.broker.list", "s10:9092");
            //串行化
            props.put("serializer.class", "kafka.serializer.StringEncoder");
            //
            props.put("request.required.acks", "1");

            //创建生产者配置对象
            ProducerConfig config = new ProducerConfig(props);

            //创建生产者
            Producer<String, String> producer = new Producer<String, String>(config);

            KeyedMessage<String, String> msg = new KeyedMessage<String, String>("test","100" ,"hello world tomas100");
            producer.send(msg);
            System.out.println("send over!");
        }
    }


消息消费者
--------------------
    /**
     * 消费者
     */
    @Test
    public void testConumser(){
        //
        Properties props = new Properties();
        props.put("zookeeper.connect", "s10:2181");
        props.put("group.id", "g3");
        props.put("zookeeper.session.timeout.ms", "500");
        props.put("zookeeper.sync.time.ms", "250");
        props.put("auto.commit.interval.ms", "1000");
        props.put("auto.offset.reset", "smallest");
        //创建消费者配置对象
        ConsumerConfig config = new ConsumerConfig(props);
        //
        Map<String, Integer> map = new HashMap<String, Integer>();
        map.put("test3", new Integer(1));
    Map<String, List<KafkaStream<byte[], byte[]>>> msgs = Consumer.createJavaConsumerConnector(new             ConsumerConfig(props)).createMessageStreams(map);
        List<KafkaStream<byte[], byte[]>> msgList = msgs.get("test");
        for(KafkaStream<byte[],byte[]> stream : msgList){
            ConsumerIterator<byte[],byte[]> it = stream.iterator();
            while(it.hasNext()){
                byte[] message = it.next().message();
                System.out.println(new String(message));
            }
        }
    }
 

扫描二维码关注公众号,回复: 2435412 查看本文章

猜你喜欢

转载自blog.csdn.net/u011444062/article/details/81208696