创建Kafka0.8.2生产者与消费者
一、下载安装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
- 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包)
- import java.util.*;
- import org.apache.kafka.clients.producer.KafkaProducer;
- import org.apache.kafka.clients.producer.ProducerRecord;
- public class SimpleProducer {
- public static void main(String[] args) {
- Properties properties = new Properties();
- properties.put("bootstrap.servers", "192.168.1.76:9092");
- properties.put("metadata.broker.list", "192.168.1.76:9092");
- properties.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");
- properties.put("serializer.class", "kafka.serializer.StringEncoder");
- properties.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");
- properties.put("request.required.acks", "1");
- KafkaProducer<Integer, String> producer = new KafkaProducer<Integer, String>(properties);
- for (int iCount = 0; iCount < 100; iCount++) {
- String message = "My Test Message No " + iCount;
- ProducerRecord<Integer, String> record = new ProducerRecord<Integer, String>("mytesttopic", message);
- producer.send(record);
- }
- producer.close();
- }
- }
十一、查看结果
- My Test Message No 0
- My Test Message No 1
- My Test Message No 2
- My Test Message No 3
- My Test Message No 4
- My Test Message No 5
- My Test Message No 6
- My Test Message No 7
- My Test Message No 8
- My Test Message No 9
- My Test Message No 10
- ...................
- ..................
十、消费者代码(0.8.2.1的jar包)
- import kafka.consumer.ConsumerConfig;
- import kafka.consumer.ConsumerIterator;
- import kafka.consumer.KafkaStream;
- import kafka.serializer.StringDecoder;
- import kafka.utils.VerifiableProperties;
- import java.util.*;
- public class SimpleConsumerExample {
- private static kafka.javaapi.consumer.ConsumerConnector consumer;
- public static void consume() {
- Properties props = new Properties();
- // zookeeper 配置
- props.put("zookeeper.connect", "192.168.1.76:2181");
- // group 代表一个消费组
- props.put("group.id", "jd-group");
- // zk连接超时
- props.put("zookeeper.session.timeout.ms", "4000");
- props.put("zookeeper.sync.time.ms", "200");
- props.put("auto.commit.interval.ms", "1000");
- props.put("auto.offset.reset", "smallest");
- // 序列化类
- props.put("serializer.class", "kafka.serializer.StringEncoder");
- ConsumerConfig config = new ConsumerConfig(props);
- consumer = kafka.consumer.Consumer.createJavaConsumerConnector(config);
- Map<String, Integer> topicCountMap = new HashMap<String, Integer>();
- topicCountMap.put("mytesttopic", new Integer(1));
- StringDecoder keyDecoder = new StringDecoder(new VerifiableProperties());
- StringDecoder valueDecoder = new StringDecoder(new VerifiableProperties());
- Map<String, List<KafkaStream<String, String>>> consumerMap = consumer.createMessageStreams(topicCountMap,
- keyDecoder, valueDecoder);
- KafkaStream<String, String> stream = consumerMap.get("mytesttopic").get(0);
- ConsumerIterator<String, String> it = stream.iterator();
- while (it.hasNext())
- System.out.println(it.next().message());
- }
- public static void main(String[] args) {
- consume();
- }
- }
十一、提供下C#版的代码
- static void Main(string[] args)
- {
- //https://github.com/Jroland/kafka-net
- //生产者
- //var options = new KafkaOptions(new Uri("http://192.168.1.76:9092"), new Uri("http://192.168.1.76:9092"));
- //var router = new BrokerRouter(options);
- //var client = new Producer(router);
- //client.SendMessageAsync("mytesttopic", new[] { new Message("hello world") }).Wait();
- //using (client) { }
- //消费者
- var options = new KafkaOptions(new Uri("http://192.168.1.76:9092"), new Uri("http://192.168.1.76:9092"));
- var router = new BrokerRouter(options);
- var consumer = new Consumer(new ConsumerOptions("mytesttopic", router));
- //Consume returns a blocking IEnumerable (ie: never ending stream)
- foreach (var message in consumer.Consume())
- {
- Console.WriteLine("Response: P{0},O{1} : {2}",
- message.Meta.PartitionId, message.Meta.Offset,System.Text.Encoding.ASCII.GetString(message.Value));
- }
- Console.ReadLine();
- }
创建Kafka0.8.2生产者与消费者的更多相关文章
- java进阶(40)--wait与notify(生产者与消费者模式)
文档目录: 一.概念 二.wait的作用 三.notify的作用 四.生产者消费者模式 五.举例 ---------------------------------------分割线:正文------ ...
- 第3月第2天 find symbolicatecrash 生产者-消费者 ice 引用计数
1.linux find export find /Applications/Xcode.app/ -name symbolicatecrash -type f export DEVELOPER_DI ...
- LMAX Disruptor—多生产者多消费者中,消息复制分发的高性能实现
解决的问题 当我们有多个消息的生产者线程,一个消费者线程时,他们之间如何进行高并发.线程安全的协调? 很简单,用一个队列. 当我们有多个消息的生产者线程,多个消费者线程,并且每一条消息需要被所有的消费 ...
- java 22 - 19 多线程之生产者和消费者的代码优化
在之前,是把生产者录入数据和消费者获取数据的所有代码都分别写在各自的类中. 这样不大好 这次把生产者和消费者部分关键代码都写入资源类中: package zl_Thread; public class ...
- java 22 - 16 多线程之生产者和消费者的问题
生产者和消费者问题的描述图 通过上图,我们可以发现: 生产者和消费者使用的都是同一个资源(肉包子) 所以,当使用线程的时候,这两类的锁也是同一把锁(为了避免出现线程安全问题) 例子:学生信息的录入和获 ...
- Java实现生产者和消费者
生产者和消费者问题是操作系统的经典问题,在实际工作中也常会用到,主要的难点在于协调生产者和消费者,因为生产者的个数和消费者的个数不确定,而生产者的生成速度与消费者的消费速度也不一样,同时还要实现生产者 ...
- java多线程中的生产者与消费者之等待唤醒机制@Version1.0
一.生产者消费者模式的学生类成员变量生产与消费demo,第一版1.等待唤醒: Object类中提供了三个方法: wait():等待 notify():唤醒单个线程 notify ...
- C# 线程(四):生产者和消费者
From : http://kb.cnblogs.com/page/42530/ 前面说过,每个线程都有自己的资源,但是代码区是共享的,即每个线程都可以执行相同的函数.这可能带来的问题就是几个线程同时 ...
- Android(java)学习笔记71:生产者和消费者之等待唤醒机制
1. 首先我们根据梳理我们之前Android(java)学习笔记70中关于生产者和消费者程序思路: 2. 下面我们就要重点介绍这个等待唤醒机制: (1)第一步:还是先通过代码体现出等待唤醒机制 pac ...
随机推荐
- 《Drools7.0.0.Final规则引擎教程》番外实例篇——相同对象and List使用
前奏 群组(QQ:593177274)交流中有朋友提出一个问题,怎么实现两个相同对象的插入和比较?相信很多朋友也遇到类似的问题,于是抽时间为大家写一段实例代码,后续代码会同步到GitHub中.下面简单 ...
- form表单传递对象数组
ajax传递数组.form表单提交对象数组 在JSP页面开发中,我们常常会用到form表单做数据提交,由于以前一直只是使用 form表单提交单个对象,只要表单文本域的name值和接收的对象的属性名一致 ...
- ASP.NET MVC3默认提供了11种ActionResult的实现
在System.Web.Mvc命名空间 ActionResult ContentResult EmptyResult FileResult HttpStatusCodeResult HttpNot ...
- 图形学习 Javascript 正则 regexper.com
regexper.com 可以很方便的显示出正则图示,方便学习正则. 比如正则 ^([a-zA-Z0-9+_-])+@([a-zA-Z_-])+(\.[a-zA-Z0-9_-])+ 一目了然,直观显示 ...
- bzoj3191卡牌游戏
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3191 原本想模拟过程,从t个人推到1个人: 但是怎么转移呢?想状压,可是50位压不到角标里. ...
- [C++ Primer] 第7章: 类
定义抽象数据类型 定义在类内部的函数是隐式的inline函数. const成员函数 又叫做常量成员函数, 成员函数参数列表之后紧跟const关键字, const修饰的是类this指针. 默认情况下th ...
- 在vc++上简单搭建环境(包括文件引用)
1,triplet_head.h 文件 #define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR 0 #define OVER_FLOW -2 ...
- Java与SQL Server, MySql, Oracle, Access的连接方法以及一些异常解决
Java与SQL Server, MySql, Oracle, Access的连接方法以及一些异常解决 I. 概述 1.1 JDBC概念 JDBC(Java Database Connectivity ...
- GridView 绑定数据的常用指定格式。
形式 语法 结果 注释 数字 {0:N2} 12.36 数字 {0:N0} 13 货币 {0:c2} $12.36 货币 {0:c4} $12.3656 货币 "¥{0:N2 ...
- PHP常用获取文件路径的函数集合整理
转自: http://blog.sina.com.cn/s/blog_71ed1b870102vslg.html 我们在开发PHP项目过程中,经常会用到包含文件,所以有时候需要获取文件的相对路径或者绝 ...