一、下载安装Kafka0.8.2

二、vi config/server.properties

三、修改为advertised.host.name=192.168.1.76

四、rm -rf  /tmp *移除临时目录下的文件

五、修改vi /etc/hosts中的127.0.0.1为192.168.1.76

六、开启zookeeper

  1. bin/zookeeper-server-start.sh config/zookeeper.properties

七、开启kafka

bin/kafka-server-start.sh config/server.properties


八、创建主题

bin/kafka-topics.sh --create --zookeeper 192.168.1.76:2181 --replication-factor 1 --partitions 1 --topic mytesttopic

九、开启消费者

bin/kafka-console-consumer.sh --zookeeper 192.168.1.76:2181 --topic mytesttopic --from-beginning 回车

十、生产者代码(0.8.2.1的jar包)

  1. import java.util.*;
  2. import org.apache.kafka.clients.producer.KafkaProducer;
  3. import org.apache.kafka.clients.producer.ProducerRecord;
  4. public class SimpleProducer {
  5. public static void main(String[] args) {
  6. Properties properties = new Properties();
  7. properties.put("bootstrap.servers", "192.168.1.76:9092");
  8. properties.put("metadata.broker.list", "192.168.1.76:9092");
  9. properties.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");
  10. properties.put("serializer.class", "kafka.serializer.StringEncoder");
  11. properties.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");
  12. properties.put("request.required.acks", "1");
  13. KafkaProducer<Integer, String> producer = new KafkaProducer<Integer, String>(properties);
  14. for (int iCount = 0; iCount < 100; iCount++) {
  15. String message = "My Test Message No " + iCount;
  16. ProducerRecord<Integer, String> record = new ProducerRecord<Integer, String>("mytesttopic", message);
  17. producer.send(record);
  18. }
  19. producer.close();
  20. }
  21. }

十一、查看结果

  1. My Test Message No 0
  2. My Test Message No 1
  3. My Test Message No 2
  4. My Test Message No 3
  5. My Test Message No 4
  6. My Test Message No 5
  7. My Test Message No 6
  8. My Test Message No 7
  9. My Test Message No 8
  10. My Test Message No 9
  11. My Test Message No 10
  1. ...................
  1. ..................

十、消费者代码(0.8.2.1的jar包)

  1. import kafka.consumer.ConsumerConfig;
  2. import kafka.consumer.ConsumerIterator;
  3. import kafka.consumer.KafkaStream;
  4. import kafka.serializer.StringDecoder;
  5. import kafka.utils.VerifiableProperties;
  6. import java.util.*;
  7. public class SimpleConsumerExample {
  8. private static kafka.javaapi.consumer.ConsumerConnector consumer;
  9. public static void consume() {
  10. Properties props = new Properties();
  11. // zookeeper 配置
  12. props.put("zookeeper.connect", "192.168.1.76:2181");
  13. // group 代表一个消费组
  14. props.put("group.id", "jd-group");
  15. // zk连接超时
  16. props.put("zookeeper.session.timeout.ms", "4000");
  17. props.put("zookeeper.sync.time.ms", "200");
  18. props.put("auto.commit.interval.ms", "1000");
  19. props.put("auto.offset.reset", "smallest");
  20. // 序列化类
  21. props.put("serializer.class", "kafka.serializer.StringEncoder");
  22. ConsumerConfig config = new ConsumerConfig(props);
  23. consumer = kafka.consumer.Consumer.createJavaConsumerConnector(config);
  24. Map<String, Integer> topicCountMap = new HashMap<String, Integer>();
  25. topicCountMap.put("mytesttopic", new Integer(1));
  26. StringDecoder keyDecoder = new StringDecoder(new VerifiableProperties());
  27. StringDecoder valueDecoder = new StringDecoder(new VerifiableProperties());
  28. Map<String, List<KafkaStream<String, String>>> consumerMap = consumer.createMessageStreams(topicCountMap,
  29. keyDecoder, valueDecoder);
  30. KafkaStream<String, String> stream = consumerMap.get("mytesttopic").get(0);
  31. ConsumerIterator<String, String> it = stream.iterator();
  32. while (it.hasNext())
  33. System.out.println(it.next().message());
  34. }
  35. public static void main(String[] args) {
  36. consume();
  37. }
  38. }

十一、提供下C#版的代码

    1. static void Main(string[] args)
    2. {
    3. //https://github.com/Jroland/kafka-net
    4. //生产者
    5. //var options = new KafkaOptions(new Uri("http://192.168.1.76:9092"), new Uri("http://192.168.1.76:9092"));
    6. //var router = new BrokerRouter(options);
    7. //var client = new Producer(router);
    8. //client.SendMessageAsync("mytesttopic", new[] { new Message("hello world") }).Wait();
    9. //using (client) { }
    10. //消费者
    11. var options = new KafkaOptions(new Uri("http://192.168.1.76:9092"), new Uri("http://192.168.1.76:9092"));
    12. var router = new BrokerRouter(options);
    13. var consumer = new Consumer(new ConsumerOptions("mytesttopic", router));
    14. //Consume returns a blocking IEnumerable (ie: never ending stream)
    15. foreach (var message in consumer.Consume())
    16. {
    17. Console.WriteLine("Response: P{0},O{1} : {2}",
    18. message.Meta.PartitionId, message.Meta.Offset,System.Text.Encoding.ASCII.GetString(message.Value));
    19. }
    20. Console.ReadLine();
    21. }

创建Kafka0.8.2生产者与消费者的更多相关文章

  1. java进阶(40)--wait与notify(生产者与消费者模式)

    文档目录: 一.概念 二.wait的作用 三.notify的作用 四.生产者消费者模式 五.举例 ---------------------------------------分割线:正文------ ...

  2. 第3月第2天 find symbolicatecrash 生产者-消费者 ice 引用计数

    1.linux find export find /Applications/Xcode.app/ -name symbolicatecrash -type f export DEVELOPER_DI ...

  3. LMAX Disruptor—多生产者多消费者中,消息复制分发的高性能实现

    解决的问题 当我们有多个消息的生产者线程,一个消费者线程时,他们之间如何进行高并发.线程安全的协调? 很简单,用一个队列. 当我们有多个消息的生产者线程,多个消费者线程,并且每一条消息需要被所有的消费 ...

  4. java 22 - 19 多线程之生产者和消费者的代码优化

    在之前,是把生产者录入数据和消费者获取数据的所有代码都分别写在各自的类中. 这样不大好 这次把生产者和消费者部分关键代码都写入资源类中: package zl_Thread; public class ...

  5. java 22 - 16 多线程之生产者和消费者的问题

    生产者和消费者问题的描述图 通过上图,我们可以发现: 生产者和消费者使用的都是同一个资源(肉包子) 所以,当使用线程的时候,这两类的锁也是同一把锁(为了避免出现线程安全问题) 例子:学生信息的录入和获 ...

  6. Java实现生产者和消费者

    生产者和消费者问题是操作系统的经典问题,在实际工作中也常会用到,主要的难点在于协调生产者和消费者,因为生产者的个数和消费者的个数不确定,而生产者的生成速度与消费者的消费速度也不一样,同时还要实现生产者 ...

  7. java多线程中的生产者与消费者之等待唤醒机制@Version1.0

    一.生产者消费者模式的学生类成员变量生产与消费demo,第一版1.等待唤醒:    Object类中提供了三个方法:    wait():等待    notify():唤醒单个线程    notify ...

  8. C# 线程(四):生产者和消费者

    From : http://kb.cnblogs.com/page/42530/ 前面说过,每个线程都有自己的资源,但是代码区是共享的,即每个线程都可以执行相同的函数.这可能带来的问题就是几个线程同时 ...

  9. Android(java)学习笔记71:生产者和消费者之等待唤醒机制

    1. 首先我们根据梳理我们之前Android(java)学习笔记70中关于生产者和消费者程序思路: 2. 下面我们就要重点介绍这个等待唤醒机制: (1)第一步:还是先通过代码体现出等待唤醒机制 pac ...

随机推荐

  1. python切片取值和下标取值时,超出范围怎么办?

    可迭代对象下标取值超出索引范围,会报错:IndexError 可迭代切片取值超出索引范围,不报错,而是返回对应的空值. a=[1,2,3,4] a[99] Traceback (most recent ...

  2. 第24课 #pragma使用分析

    #pragma是C语言留给编译器厂商进行扩展用的. 这个关键字在不同的编译器之间也许是不能够移植的. #pragma简介 #pragma message #pragma message打印的消息并不代 ...

  3. Python的安装和使用ubuntu下

    ubuntu下Python的安装和使用 https://www.cnblogs.com/luckyalan/p/6703590.html ubuntu下Python的安装和使用 1 文章介绍 本文介绍 ...

  4. 【C#】App_LocalResources实现多语言

    介绍 如果您创建的网页将由使用不同语言的用户阅读,则必须为这些读者提供用他们自己的语言查看网页的方法.一种方法是分别用各语言重新创建页面,但这种方法可能需要大量工作量.容易出错并且在更改原始页时很难维 ...

  5. ambassador 学习八 流量拷贝说明

    这个功能nginx 的mirror 插件也支持,基本原理就是数据发送后端,但是不进行响应 参考图 实现方式 原始请求 getambassador.io/config: | --- apiVersion ...

  6. 使用dev_add_pack注冊新的以太网类型

    接着上一篇文件:使用PF_PACKET和SOCK_RAW发送自己定义type以太网数据包 上一篇文章我们使用wireshare抓包.尽管在Linux下也能够使用抓包工具,可是我打算自己动手,在内核添加 ...

  7. 用JavaScript解决Placeholder的IE8兼容问题

    <script type="text/javascript"> if( !('placeholder' in document.createElement('input ...

  8. Java-Runoob-高级教程-实例-环境设置实例:2.Java 实例 – Java 如何运行一个编译过的类文件?

    ylbtech-Java-Runoob-高级教程-实例-环境设置实例:2.Java 实例 – Java 如何运行一个编译过的类文件? 1.返回顶部 1. Java 实例 - 如何执行编译过 Java ...

  9. C++ - 容器概述

    一 迭代器iterator 5种类别 常用的迭代器 常用的迭代器 二 分配算符Allocators 三 容器简介 STL标准容器类简介 标准容器类 说明 顺序性容器 关联容器 容器适配器 所有标准库共 ...

  10. string ids=aduuids.Aggregate("", (m, n) => m + n+",").TrimEnd(',');

    string ids=aduuids.Aggregate("", (m, n) => m + n+",").TrimEnd(',');