Kafka 0.11版本源码编译
1.关于为什么要阅读Kafka源码?
其实日常生产中,我们不会接触很复杂的kafka代码,都是一些比较简单的生产者消费者代码,那为什么还是要学习Kafka源码呢?学习Kafka源码的好处是我们在日常使用Kafka的过程,不可避免的会遇到一些关于Kafka的一些bug和问题,比方说一些参数配置问题,这个时候如果百度不能解决,我们就需要进入源码查看原因。同时阅读Kafka源码能够更好的帮助我们理解整个框架,从设计者的角度思考问题。
2.Kafka源码版本的选择
我选择的是Kafka0.11版本,kafka0.11版本应该是kafka最经典的版本,也是目前使用最多的一个版本。所以建议大家阅读kafka源码的时候也选择kafka0.11版本。不建议使用比较新的版本例如2.x版本,也不建议阅读特别老的版本。
2.源码编译
1)java8 安装
具体安装和环境变量配置不做详述,因为scala是基于JVM,所以安装scala之前安装java8。进入cmd,java -version检查是否安装成功
2)scala 2.11版本安装
scala的安装和java类似,比较简单,这里也不作详述。安装和配置完环境变量,进入cmd,用scala -version检查是否安装成功
3)编译工具的安装
kafka和其他开源框架不同的地方,是它使用gradle进行源码编译,gradle是一个类似于maven的自动化构建项目的工具。从官网下载gradle安装包,下载地址https://gradle.org/releases/ ,然后解压,最后配置环境变量,进入cmd 用 gradle -version 查看是否安装成功。
4)kafka源码下载及解压
从Kafka官网http://kafka.apache.org/下载 kafka0.11版本源码kafka-0.11.0.3-src.tgz,解压。
5) cmd命令行,切换到进入到kafka源码包的安装目录 E:\kafka\kafka-0.11.0.3-src ,使用gradle idea命令编译源码。
笔者当时编译的时候,报了一个错

提示504行,有错,我们打开build.gradle 文件查看504行,提示apply plugin: "org.scoverage"有问题,其实是我们这个版本的插件太老了,修改
dependencies {
// For Apache Rat plugin to ignore non-Git files
classpath "org.ajoberstar:grgit:1.9.2"
classpath 'com.github.ben-manes:gradle-versions-plugin:0.14.0'
classpath 'org.scoverage:gradle-scoverage:2.5.0'
classpath 'com.github.jengelman.gradle.plugins:shadow:2.0.1'
} 将gradle-scoverage的版本由2.1.0改为2.5.0,
同时建议将gradle.plugins:shadow的版本改为2.0.1,之前的文件中版本1.9.1笔者编译时发现也是不兼容的
修改了build.gradle以后,再使用gradle idea 然后编译成功,整个编译过程比较慢,需要耐心等待。编译成功如下
6)最后,用idea打开编译好的Kafka源码阅读,idea要安装scala2.11版本插件


浙公网安备 33010602011771号