文章目录
1、前言
在开始阅读kafka源码之前,源码测试环境很重要,搭建kafka开发环境对于阅读kafka源码至关重要,本篇文章不会很长,主要是简单介绍一下kafka源码环境的搭建以及使用。
2、源码获取
kafka获取源码的方式主要有两种:
1、官网下载(非git托管)
2、github下载
这两种源码都是同步的,如果需要进行版本管理的话可以下载GitHub版本
2.1、官网下载
2.2、Github下载
github的下载可能会比较慢,这里推荐两种方法:
方法一:通过【Download Zip】的方式使用迅雷下载
方法二:通过【码云】拉取github项目,再从码云下载
选择【导入已有仓库】
填写github上面的kafka地址
通过码云下载可能需要注意一下,码云可能为了快速拉取会从别人已经存在的项目导入,这样会导致当前拉取到的代码和最新版本代码不一致的情况
3、Gradle安装
下载地址
解压文件到指定目录
配置环境变量
验证是否安装成功
4、Scala安装
官网地址
windows建议选择msi方式安装,这样就不需要自己配置环境变量了
配置环境变量
验证是否安装成功
5、项目运行
5.1、安装Scala插件
使用IDEA导入项目,首先IDEA安装Scala插件
5.2、修改scala版本
导入项目到idea后,修改scala版本为当前已经安装的scala版本
5.3、导入项目
导入项目后为了加快编译速度,建议修改镜像源为国内镜像
配置如下:
repositories {
maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
maven { url 'http://maven.aliyun.com/nexus/content/repositories/jcenter' }
maven {
url "https://plugins.gradle.org/m2/"
}
}
allprojects {
repositories {
maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
}
......
}
5.3、编译项目
首先运行将项目导入idea
gradle idea
然后执行
gradle jar
进行打包编译
如果需要打包成release包可以使用一下指令
gradle clean releaseTarGz
执行成功后在core->build->distributions
底下会有一个压缩包,这个包就是解压即可运行的
5.4、本地运行
如果编译完成后想本地运行,可以通过kafka.Kafka
里面的main()
方法直接运行
运行先需要将config某块底下的log4j.properties复制到kafka.Kafka
同目录下,或者在core->main底下创建resources目录这样可以保证日志正常输出。其次指定运行的server.properties
6、运行调试
前面介绍项目本地运行的情况,通过本地运行可以直接直接断点,但是当需要搭建分布式环境调试的情况下不满足了,这样就需要使用JVM的远程断点,kafka源码中本身是有设置远程断点的JVM参数(在kafka-run-class.sh
中),但是默认是不开启的:
需要开启只需要设置$KAFKA_DEBUG
为true即可
KAFKA_DEBUG=true #开启断点
# Set Debug options if enabled
if [ "x$KAFKA_DEBUG" != "x" ]; then
# Use default ports
DEFAULT_JAVA_DEBUG_PORT="5005"
if [ -z "$JAVA_DEBUG_PORT" ]; then
JAVA_DEBUG_PORT="$DEFAULT_JAVA_DEBUG_PORT"
fi
# Use the defaults if JAVA_DEBUG_OPTS was not set
DEFAULT_JAVA_DEBUG_OPTS="-agentlib:jdwp=transport=dt_socket,server=y,suspend=${DEBUG_SUSPEND_FLAG:-n},address=$JAVA_DEBUG_PORT"
if [ -z "$JAVA_DEBUG_OPTS" ]; then
JAVA_DEBUG_OPTS="$DEFAULT_JAVA_DEBUG_OPTS"
fi
echo "Enabling Java debug options: $JAVA_DEBUG_OPTS"
KAFKA_OPTS="$JAVA_DEBUG_OPTS $KAFKA_OPTS"
fi
当输出这句话的时候远程Debug模式开启成功,这时候只需要设置idea就能接入断点了