windows平台下,采用kafka作为消息中间件,consumer和producer采用java api (环境搭建)

1. 先安装zookeeper

    a. 下载zookeeper-3.3.6.tar.gz 解压到D:\xxx下,

    b. 修改zookeeper主配置文件,conf\zoo.cfg 如没有,则新建,将其中的linux路径分隔符统一改成windows下java 语言的分隔符 \\ 如:D:\\xxx\\xxx

    c. 运行bin\zkServer.bat则启动了zookeeper , 测试用,可用jps显示 出QuorumPeerMain进程,则表明zookeeper安装成功,然后ctrl+c关闭zookeeper进程

2. 安装kafka

    a. 下载kafka_2.10-0.8.2.0.tar.gz,解压到D:\kafka_2.10-0.8.2.0

    b. conf\zookeeper.properties 启动zookeeper时使用的配置文件,相当于上文中的zoo.cfg , 修改配置文件后,启动zookeeper时使用kafka中bin\windows\zookeeper-server-start.bat文件 ,启动方法如下图所示

                                   

校验启动:

    c. 启动kafka(提前修改好kafka-server的配置文件servier.properties

                   

3. 校验

    a.首先创建topic

       先查看topic列表

        

      创建topic

        

       再次查看topic列表

         

     b. 启动控制台消息接收器

         

     c. 启动控制台消息发送器并发送消息(hello world!)

         

          则消息接收控制台已经收到消息

          

       至此,windows平台下 kafka的安装已全部完成

4.  使用java语言编写消息发送、接收客户端、kafka作为消息中间件的代码

          代码:

 package kafka_learn;

import java.util.Properties;

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



public class MyProducer {

    public static void main(String[] args) {
        
        Properties props = new Properties();
        props.put("metadata.broker.list", "localhost:9092");
        props.put("serializer.class", "kafka.serializer.StringEncoder");
        props.put("request.required.acks", "0");
        props.put("producer.type", "async");


        ProducerConfig config = new ProducerConfig(props);
        Producer<String, String> producer = new Producer<String, String>(config);

        String msg = "message from ydy client";
        
        KeyedMessage<String, String> data = new KeyedMessage<String, String>("ydy", msg);
        producer.send(data);
        producer.close();

    }

}

Consumer代码:

package kafka_learn;

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

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



public class MyConsumer {

    public static void main(String[] args) {

        Properties props = new Properties();
        props.put("zookeeper.connect", "localhost:2181");
        props.put("auto.commit.enable", "true");
        props.put("auto.commit.interval.ms", "60000");
        props.put("group.id", "test-group");
        
        ConsumerConfig consumerCfg = new ConsumerConfig(props);
        ConsumerConnector consumerConn = Consumer.createJavaConsumerConnector(consumerCfg);        

        Map<String, Integer> topicCountMap = new HashMap<String, Integer>();
        topicCountMap.put("ydy", 1);
        KafkaStream<byte[], byte[]> kstream = consumerConn.createMessageStreams(topicCountMap).get("ydy").get(0);
        ConsumerIterator<byte[], byte[]> iter = kstream.iterator();
        System.out.println("--------开始从kafka接受消息----------");
        while(iter.hasNext()){
            System.out.println(new String(iter.next().message()));
        }
    }

}











评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值