使用IDEA 打开、调试kafka源码

1 素材

  1. kafka源码
    https://github.com/apache/kafka。建议切换到3.0分支,或者3.1分支,都是比较新的代码。目前最新稳定版本是3.0.0,所以我使用的是3.0分支。

  2. jdk
    需要java8,或更高版本。

  3. scala
    需要scala2.12,或者scala2.13。 我用的2.13版本。

  4. gradle
    kafka使用gradle作为编辑工具。gradle版本不能太低,否则gradle-wrapper可能会报错。我用的 gradle-6.8.3。

  5. idea
    版本不能太低,否则跟gradle不兼容。我用的2021.1。

2 打开源码

  1. 下载项目,切换分支
  2. 在idea中打开项目,选择gradle项目
  3. 安装scala插件;配置scala
    File -> Project Structure -> Platform Settings -> Global Libraries -> 把scala目录配置进去。


    image.png
  1. 刷新gradle项目,时间较长要5分钟左右。
  2. 如果是第一次刷新项目,会根据 gradle/wrapper/gradle-wrapper.properties 的配置下载相应版本的gradle包。如果下载失败,请自行手动下载,配置到相应的目录。

3 调试和运行项目

3.1 本地运行

kafka的启动类是:
core/src/main/scala/kafka/Kafka.scala

我尝试在本地运行,死活跑不起来,报错如下。网上也没有找到靠谱的解决办法。


image.png

3.2 远程调试

尝试本地运行失败后,又尝试了远程调试的方式。

  1. 下载kafka3.0版本软件 https://kafka.apache.org/downloads
  2. 找个linux机器,上传和解压软件包。修改bin/kafka-server-start.sh,增加如下配置,启用远程调试端口,然后启动kafka:
    JAVA_DEBUG_OPTS=" -Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,address=8002,server=y,suspend=n "
image.png
  1. 在idea配置远程调试


    image.png
image.png
  1. 启动远程调试
    在工程中打断点,kafka收到请求后,可以进入到工程的断点。


    image.png

你可能感兴趣的:(使用IDEA 打开、调试kafka源码)