環境準備
在閱讀 Kafka 源碼之前,我們要先做一些必要的環境準備工作:至少要提前安裝好 Java、Gradle、Scala、IDEA 和 Git 等軟件。
這裏編譯的當前Kafka源碼的trunk分支的最新代碼。
Java
Java不用說了,一般的應該都安裝了,這裏需要Java8及以上。
Gradle
當前時間Kafka的源碼編譯需要Gradle5.2及以上,我這裏安裝的5.5版本。
官網下載地址:https://gradle.org/releases/
下載後解壓,配置bash_profile
通過以下命令打開.bash_profile文件
open -e ~/.bash_profile
添加以下環境變量配置並保存:
GRADLE_HOME=/Users/shine/Documents/programme/gradle-5.5;
export GRADLE_HOME
export PATH=$PATH:$GRADLE_HOME/bin
在終端中執行source ~/.bash_profile命令使配置生效
gradle -version查看版本
Scala
當前社區編譯 Kafka 支持 3 個 Scala 版本,分別是 2.11、2.12 和 2.13。2.11 應該很快就會不支持了,而 2.13 又是剛剛推出的版本,因此推薦安裝 Scala 2.12 版本。
官網下載地址:https://www.scala-lang.org/download/all.html
選擇適合的版本下載並解壓,這裏我選擇的2.12.11
跟配置gradle環境變量一樣,打開.bash_profile文件追加scala環境配置並保存:
SCALA_HOME=/Users/shine/Documents/programme/scala-2.12.8;
export SCALA_HOME
export PATH=$PATH:$SCALA_HOME/bin
在終端中執行source ~/.bash_profile命令使配置生效
IDEA
Idea構建Kafka源碼需要安裝Scala插件,配置JDK和SDK,導入Kafka源碼的時候就會自動提示配置jdk和sdk路徑,當然也可以右鍵項目Add Framework Support配置。
安裝插件可以直接在Plugins下載,也可以通過指定外部文件。
至此,基礎環境搭建完成,接下來直接通過Idea閱讀Kafka源碼。
IDEA構建Kafka源碼
首先創建一個乾淨的目錄下載Kafka源碼:
$ git clone https://github.com/apache/kafka.git
在漫長的等待之後,你的路徑上會新增一個名爲 kafka 的子目錄,它就是 Kafka 項目的根目錄。如果在你的環境中,上面這條命令無法執行的話,你可以在瀏覽器中輸入https://codeload.github.com/apache/kafka/zip/trunk下載源碼 ZIP 包並解壓,只是這樣你就失去了 Git 管理,你要手動鏈接到遠程倉庫,具體方法可以參考這篇文檔 https://help.github.com/en/github/getting-started-with-github/fork-a-repo
下載完後不要急於導入Kafka源碼,先用gradle構建一下:
$ gradle
$ ./gradlew jar
第一條命令是用來下載和更新 Gradle 套件(Gradle Wrapper)的,第二條命令則是用 Gradle 套件構建 Kafka 工程,生成 Jar 文件。
接下來可以導入Kafka源碼,並啓動server。項目工程被導入之後,IDEA 會對項目進行自動構建,等構建完成之後,可以找到 core 目錄源碼下的 Kafka.scala 文件。直接啓動的話,會提示需要參數,所以需要配置server.properties文件路徑。
如果不想啓動報SLF4J錯誤,在build.gradle文件加入slf4jlog4j