Kafka开发环境搭建(五)
如果你要利用代码来跑kafka的应用,那你最好先把官网给出的example先在单机环境和分布式环境下跑通,然后再逐步将原有的consumer、producer和broker替换成自己写的代码。所以在阅读这篇文章前你需要具备以下前提:
1. 简单了解kafka功能,理解kafka的分布式原理
2. 能在分布式环境下成功运行—topic test。
如果你还没有完成上述两个前提,请先看:
接下来我们就简单介绍下kafka开发环境的搭建。
1. 搭建scala环境,这里有两种方案,第一直接去scala官网下载SDK,解压配置环境变量;第二种办法,你可以不用安装SDK,直接在项目中引用kafka编译后下载下来的scala编译包和编码包(scala-compiler.jar和scala-library.jar)。我推荐第二种,因为通过kafka编译下载下来的scala版本和kafka版本都是匹配的(但是有时候可能会跟eclipse的插件需要的环境冲突,所以最好把第一种也安装一下,以防万一),而一般我们用的是java项目来写,所以直接导入相关依赖包就可以了,第一种方案有助于我们看源码和用scala开发。这些jar的路径位于kafka-0.7.2-incubating-src\javatest\lib目录下。
2. 为eclipse安装scala开发环境。这只是一个插件,可以在:http://scala-ide.org/中下载安装或者在线安装。装完之后,你就能在eclipse中创建scala的项目了。
我们可以先写一个hello world试一下,这样一来,是不是又多了一种语言写hello world了。
有些人new的时候找不到scala相关的类,那是因为你eclipse的perspective不对,切换到scala的perspective下就可以了。注意new的是object,然后输入:
1
2
3
4
5
6
7
8
|
package com.a 2 .kafka.scala.test object Hello { def main(args : Array[String]) : Unit = { printf( "Hello Scala!!" ); } } |
3. 找到编码需要的依赖包。记住去你linux上经过update的kafka文件夹里找,不要从直接从官网上下载的文件里找。具体路径是:kafka-0.7.2-incubating-src\javatest\lib 这是你用java开发kafka相关程序用到的最基础的包,如果你用到了hadoop,只要去相关的文件夹找一下就可以了。然后把这些包加到项目里即可。
到了这里,基本的开发环境应该是搭建完了,然后我们要开始写点儿简单的代码了。我们还是根据之前《分布式环境搭建》中给出的例子。稍微回忆下:
1. 启动zookeeper server :bin/zookeeper-server-start.sh ../config/zookeeper.properties & (用&是为了能退出命令行)
2. 启动kafka server: bin/kafka-server-start.sh ../config/server.properties &
3. Kafka为我们提供了一个console来做连通性测试,下面我们先运行producer:bin/kafka-console-producer.sh --zookeeper 192.168.10.11:2181 --topic test 这是相当于开启了一个producer的命令行。
4. 接下来运行consumer,新启一个terminal:bin/kafka-console-consumer.sh --zookeeper 192.168.10.11:2181 --topic test --from-beginning
5. 执行完consumer的命令后,你可以在producer的terminal中输入信息,马上在consumer的terminal中就会出现你输的信息。
这个例子就是在分布式的环境下producer生产数据,然后consumer从broker抓取数据显示在console上。当然注意一点server.properties中的hostname需要换成你的对应地址,具体可以回去看《分布式环境搭建》。现在我们就用代码来模拟producer发送数据的过程:
这里我们建一个java project就可以了,导入依赖包。kafka-0.7.2-incubating-src\javatest\lib目录下的jar.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
package com.a2.test.kafka; import java.util.Properties; import kafka.javaapi.producer.Producer; import kafka.javaapi.producer.ProducerData; import kafka.producer.ProducerConfig; public class Producertest { public static void main(String[] args) { Properties props = new Properties(); props.put( "zk.connect" , "192.168.10.11:2181" ); props.put( "serializer.class" , "kafka.serializer.StringEncoder" ); ProducerConfig config = new ProducerConfig(props); Producer<String, String> producer = new Producer<String, String>(config); ProducerData<String, String> data = new ProducerData<String, String>( "test" , "Hello" ); producer.send(data); } } |
这样我们就用代码代替了console去发送信息了,这里我们用了utils中的properties对象直接构建了配置,而不是直接读取,当然你也可以读配置。Data里的两个参数,第一个是指定topic,第二个是发送的内容。
接下来就是运行了,如果你是在windows下,可能会等待很久然后报Unable to connect to zookeeper server within timeout: 6000,这个可能是网卡的原因,你可以直接放到linux上,然后用命令行运行,注意引包。
1
|
Java –jar test.jar Dclasspath=/lib |
Consumer的代码以及实现和producer差不多,如果你感兴趣可以去官网找相关的代码,都很简单。当然还有一部分关于producer和consumer的配置,我们下篇再说。
Kafka开发环境搭建(五)的更多相关文章
- 五步搞定Android开发环境部署——非常详细的Android开发环境搭建教程
在windows安装Android的开发环境不简单也说不上算复杂,本文写给第一次想在自己Windows上建立Android开发环境投入Android浪潮的朋友们,为了确保大家能顺利完成开发环境的搭 ...
- 转:Windows下的PHP开发环境搭建——PHP线程安全与非线程安全、Apache版本选择,及详解五种运行模式。
原文来自于:http://www.ituring.com.cn/article/128439 Windows下的PHP开发环境搭建——PHP线程安全与非线程安全.Apache版本选择,及详解五种运行模 ...
- SLAM+语音机器人DIY系列:(五)树莓派3开发环境搭建——1.安装系统ubuntu_mate_16.04
摘要 通过前面一系列的铺垫,相信大家对整个miiboo机器人的DIY有了一个清晰整体的认识.接下来就正式进入机器人大脑(嵌入式主板:树莓派3)的开发.本章将从树莓派3的开发环境搭建入手,为后续ros开 ...
- Struts2开发环境搭建,及一个简单登录功能实例
首先是搭建Struts2环境. 第一步 下载Struts2去Struts官网 http://struts.apache.org/ 下载Struts2组件.截至目前,struts2最新版本为2.3.1. ...
- android开发环境搭建日记和嵌入式Android开发环境初探
非常感谢博客园的各位,按照你们的博文,还有利用百度和谷歌逐渐建立了android的开发环境,只是给自己备份参考查看,看过的人可以忽略这篇文章. 本文章大部分参考了:http://www.cnblogs ...
- mac10.9下eclipse的storm开发环境搭建
--------------------------------------- 博文作者:迦壹 博客地址:http://idoall.org/home.php?mod=space&uid=1& ...
- Spark Idea Maven 开发环境搭建
一.安装jdk jdk版本最好是1.7以上,设置好环境变量,安装过程,略. 二.安装Maven 我选择的Maven版本是3.3.3,安装过程,略. 编辑Maven安装目录conf/settings.x ...
- Android开发环境搭建(转)
转载:http://www.cnblogs.com/zoupeiyang/p/4034517.html#1 引言 在windows安装Android的开发环境不简单也说不上算复杂,本文写给第一次想 ...
- iOS开发教程之:iPhone开发环境搭建
安装条件: 硬件:一台拥有支持虚拟技术的64位双核处理器和2GB以上内存的PC. 注意:运行MAC OS,需要电脑支持虚拟技术(VT),安装时,需要将VT启动,在BIOS中开启. 软件: Window ...
随机推荐
- hdu 5112 (2014北京现场赛 A题)
给出某个时刻对应的速度 求出相邻时刻的平均速度 输出最大值 Sample Input23 // n2 2 //t v1 13 430 31 52 0 Sample OutputCase #1: 2.0 ...
- Linux学习笔记——基于鸟哥的Linux私房菜
Linux学习笔记--基于鸟哥的Linux私房菜 ***** ARM与嵌入式linux的入门建议 (1) 学习基本的裸机编程:ARM7或ARM9,理解硬件架构和控制原理 (这一步是绝对的根基) (2) ...
- 流程设计器jQuery + svg/vml(Demo7 - 设计器与引擎及表单一起应用例子)
去年就完成了流程设计器及流程引擎的开发,本想着把流程设计器好好整理一下,形成一个一步一步的开发案例,结果才整理了一点点,发现写文章比写代码还累,加上有事情要忙,结果就.. 明天要去外包驻场了,现把流程 ...
- Ionic实战九:ionic视频播放
本模板和以前的方式不同,采用的是 iframe方式引入的视频,如下代码:       
- Ionic Js八:头部和底部
1.ion-header-bar 这个是固定在屏幕顶部的一个头部标题栏.如果给它加上'bar-subheader' 这个样式,它就是副标题. <ion-header-bar align-titl ...
- Hades:移动端静态分析框架
只有通过别人的眼睛,才能真正地了解自己 ——<云图> 背景 作为全球最大的互联网 + 生活服务平台,美团点评近年来在业务上取得了飞速的发展.为支持业务的快速发展,移动研发团队规模也逐渐从零 ...
- QQ邮件定时发送天气预报
1.首先利用request库去请求数据,天气预报使用的是和风天气的API(www.heweather.com/douments/api/s6/weather-forecast) 2.利用python的 ...
- MongoDB 进阶
一.MongoDB 复制(副本集) MongoDB复制是将数据同步在多个服务器的过程. 复制提供了数据的冗余备份,并在多个服务器上存储数据副本,提高了数据的可用性, 并可以保证数据的安全性. 复制还允 ...
- ArrayList,Vector,LinkedList
韩梦飞沙 韩亚飞 313134555@qq.com yue31313 han_meng_fei_sha 数组列表 和 向量Vector, 都是使用数组方式存储. 向量 使用了 同步synchr ...
- luoguP4036 [JSOI2008]火星人 平衡树+hash
这个操作十分的复杂 但是可以拿平衡树维护 直接二分答案然后用$hash$值判断即可 复杂度$O(10000 * log^2 n + n \log n)$ #include <cstdio> ...