[TOC]
1. 准备工作
1.1 安装好jdk、scala sdk
1.2 安装好gradle
gradle版本不能太高
1.3 本地安装好zookeeper并运行; 这里使用zookeeper-3.3.6版本
2. 下载源码
为了更好的追踪源码和版本管理,我们不去kafka官网下载源码,可以直接去github clone kafka的源码。github地址是:https://github.com/apache/kafka 。
git clone https://github.com/apache/kafka.git
2.2 等待源码下载完毕。进入源码目录
cd kafka
2.3 kafka源码以tag作为一个版本的发布, 运行命令 git tag看下所有的tag
git tag
2.4 checkout到0.10.0.0版本
git checkout 0.10.0.0
3. 编译
3.1 为了避免网络限制等,我们可以先修改下build.gradle中的仓库地址, 即在如图位置加入如下代码
mavenLocal()
maven {
url "http://maven.aliyun.com/nexus/content/groups/public/"
}
在kafka源码的根目录执行命令
gradle wrapper
gradle idea
打开IDEA,File -> Open -> kafka源码项目,
配置config/server.properties,将zk的地址改为可用的地址,并启动zk。
zookeeper.connect=localhost:2181
将log4j.properties放置到src/main/Scala
修改log4j.properties,增加kafka日志路径
kafka.logs.dir=logs/my-kafka-log
配置启动/调试参数
Main Class = kafka.Kafka
VM options = -Dcom.sun.management.jmxremote.port=9999 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false
Program arguments = config/server.properties
注意jdk版本 我本地有jdk11 导致编译失败,换成jdk8就ok