1 素材
kafka源码
https://github.com/apache/kafka。建议切换到3.0分支,或者3.1分支,都是比较新的代码。目前最新稳定版本是3.0.0,所以我使用的是3.0分支。jdk
需要java8,或更高版本。scala
需要scala2.12,或者scala2.13。 我用的2.13版本。gradle
kafka使用gradle作为编辑工具。gradle版本不能太低,否则gradle-wrapper可能会报错。我用的 gradle-6.8.3。idea
版本不能太低,否则跟gradle不兼容。我用的2021.1。
2 打开源码
- 下载项目,切换分支
- 在idea中打开项目,选择gradle项目
-
安装scala插件;配置scala
File -> Project Structure -> Platform Settings -> Global Libraries -> 把scala目录配置进去。
- 刷新gradle项目,时间较长要5分钟左右。
- 如果是第一次刷新项目,会根据 gradle/wrapper/gradle-wrapper.properties 的配置下载相应版本的gradle包。如果下载失败,请自行手动下载,配置到相应的目录。
3 调试和运行项目
3.1 本地运行
kafka的启动类是:
core/src/main/scala/kafka/Kafka.scala
我尝试在本地运行,死活跑不起来,报错如下。网上也没有找到靠谱的解决办法。
3.2 远程调试
尝试本地运行失败后,又尝试了远程调试的方式。
- 下载kafka3.0版本软件 https://kafka.apache.org/downloads
- 找个linux机器,上传和解压软件包。修改bin/kafka-server-start.sh,增加如下配置,启用远程调试端口,然后启动kafka:
JAVA_DEBUG_OPTS=" -Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,address=8002,server=y,suspend=n "
-
在idea配置远程调试
-
启动远程调试
在工程中打断点,kafka收到请求后,可以进入到工程的断点。