kafka源码阅读环境

时间:2022-09-18 15:27:02

在开始分析kafka的源码之前,我们先要手动搭建kafka源码的调试环境,需要准备的软件有,java、scala、gradle、zookeeper、kafka、ide
软件版

java:1.8.0_141
scala:2.11.4
gradle:4.7
zookeeper:3.4.6
kafka:1.0.0  
ide:idea 2017.1.5
OS:window7  64

1、安装:
首先安装 jdk 、scala 、gradle。这里就不详细介绍了,这个网上应该很多说明。这个主要介绍一下window下面安装zookeeper。
从zookeeper官网下载其二进制压缩包,之后解压缩,这里我们部署的是单机模式,因为主要是给kafka来使用,
解压以后,将%ZOOKEEPER%\conf\zoo_sample.cfg文件复制一份,重命名为zoo.cfg。修改zoo.cfg配置文件,这里主要就是修改dataDir配置项,此配置项指向zookeeper存储数据的目录,其他配置可以不进行修改
kafka源码阅读环境
以上修改了以后,和java一样需要配置环境变量
由于kafka使用依赖于zookeeper服务,在启动kafka之前,需要先使用zkServer命令,启动上文已经配置好的zookeeper服务
kafka源码阅读环境

2、kafka源码构建
从kafka官网上面下载kafka-1.0.0-src,解压,使用命令行进入kafka的根目录,使用gradle idea 命令进行构建,如果是eclipse工程请使用gradle eclipse命令。在构建过程中会从网上下载各种依赖包,时间会有点长,最终输出BUILD SUCCESSFUL字样,表示构建成功
kafka源码阅读环境
3、idea 安装scala 插件
在 settings -》plugins->scala
kafka源码阅读环境

4、配置、启动kafka
在kafka服务端使用log4j输出日志,启动前需要把log4j.properties配置文件放置到src/main/scala路径下,然后运行程序,这样才能正确输出日志信息,此log4j.properties文件可以从conf目录中获取
kafka源码阅读环境
kafka源码阅读环境

server.properties是kafka的主要配置文件,这里我们主要修改一下log.dirs,其他的配置文件后面在介绍
kafka源码阅读环境

5、配置kafka的启动参数
kafka 服务端的入口类是kafka.Kafka,除了指定入口类,还需要指定server.properties配置文件所在位置,即在kafka源代码的config目录下
第一次启动时,idea会重新编译整个项目,编译完成后启动,
kafka源码阅读环境
kafka源码阅读环境

6、验证
为了验证上文配置的源码环境是否成功,可以使用kafka二进制包中自带的三个脚本进行验证,分布是kafka-topics用于创建topic,kafka-console-producer是一个命令行producer,kafka-console-consumer是一个命令行consumer
首先使用kafka-topics.bat创建一个”test” topic其中的partition和replication-factor都为1

首先我们需要在kafka的源码路径上面执行 gradle jarAll,执行完成以后会出现BUILD SUCCESSFUL的字眼
kafka源码阅读环境
接下来进入到%KAFKA_HOME%\bin\windows下面
执行
kafka-topics.bat –create –zookeeper 192.168.1.106:2181 –replication-factor 1 –partitions 1 –topic test
kafka源码阅读环境
当topic创建成功以后,启动2个命令行窗口,分别执行下面2行命令,一个作为生产者,另一个作为消费者
kafka-console-producer.bat –broker-list 192.168.1.106:9092 –topic test
kafka-console-consumer.bat –zookeeper 192.168.1.106:2181 –topic test
启动完成以后,在命令行里面随便输入内容,可以在消费者命令行窗口中看到相应的消息,这就表明我们搭建的kafka源码环境可以正常运行了,安装完成之后,可以直接在IDE中进行debug分析kafka的工作流程了
kafka源码阅读环境
kafka源码阅读环境

                                                 更多请关注微信公众号
                                             kafka源码阅读环境