Kafka源碼閱讀-kafka源碼導入idea總是報錯實踐

摘要

kafka源碼閱讀第一步須要你們kafka的源碼環境,kafka的源碼本次搭建步驟以下:
1.環境準備
2.idea的scala插件安裝
3.github下源代碼下載對應版本
4.修改配置
5.配置gradle(重要)
6.kafka自動編譯
7.啓動kafka配置
8.啓動kafkahtml

步驟

1.環境

idea2020
jdk1.8
gradle3.5
scala2.11.8
zookeeper(單機集羣均可以)
kafka-0.10.1git

2.idea提早設置

首先安裝scala插件
idea的設置裏面左側有一個「Plugins」,搜索scala相關的插件,此時一開始是找不到的,而後點擊「search in repositories」,找到一個「Scala」插件,他的類別是「Language」,在線裝便可,他會下載以後安裝。安裝後以下圖:
image.pnggithub

3.克隆源碼

git clone https://github.com/apache/kafka.git

拉取遠程分支:apache

git fetch origin

切換到目的分支segmentfault

git checkout -b 0.10.1 origin/0.10.1

這個時候切記不能先用idea直接打開項目!app

2.打包環境

kafka自帶了一些Gradle的Task,能夠生成出導入Eclipse或者Idea配置。
在Kafka目錄下執行ide

gradle jar
gradle idea

這個時候目錄下會出現一個文件叫kafka.ipr
在finder中雙擊這個文件,idea會自動打開並導入項目。通常Idea打開會,右下角會彈出一個框,意思是:咱們檢測出這個是Gradle項目,須要導入Gradle的配置嗎?
這個時候,點擊確認就行。fetch

若是打開Idea啥也沒發生,那麼就須要咱們本身打開文件build.gradle
注:也就是這個時候纔會打開Idea
image.pnggradle

4.修改配置

4.1 gradle.build文件

文件添加:ui

ScalaCompileOptions.metaClass.daemonServer = true
ScalaCompileOptions.metaClass.fork = true
ScalaCompileOptions.metaClass.useAnt = false
ScalaCompileOptions.metaClass.useCompileDaemon = false

4.2 建立文件

建立log目錄和 data目錄
建立resources目錄,將config下的log4j.properties文件放到resources目錄下
image.png

4.3 修改文件

修改 config/server.properties 文件中的 ${kafka.logs.dir} 都改到新建立的log目錄。
修改config/server.properties 文件中 log.dirs 改成新建立的 data目錄。

5.配置gradle

注:配置次gradle特別重要,有時候咱們出現的編譯失敗的問題不少時候是因爲本地gradle配置問題,好比:

* Where:
Build file 'D:\idePro\kafka0.1.0.1\kafka-0.10.1\kafka-0.10.1\build.gradle' line: 305

* What went wrong:
A problem occurred evaluating root project 'kafka-0.10.1'.
> Cannot set the value of read-only property 'additionalSourceDirs' for task ':jacocoRootReport' of type org.gradle.testing.jacoco.tasks.JacocoReport.

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

Deprecated Gradle features were used in this build, making it incompatible with Gradle 7.0.
Use '--warning-mode all' to show the individual deprecation warnings.
See https://docs.gradle.org/6.5.1/userguide/command_line_interface.html#sec:command_line_warnings

image.png

6.kafka自動編譯

設置好上面步驟後,kafka會根據本地的gradle進行自動編譯。
導入的過程也須要很多的時間,須要耐心等待,會顯示的是以下的圖:
image.png
最後導入成功以下圖:
image.png

7.啓動kafka配置

若是咱們要在IntelliJ IDEA裏啓動kafka,經過源碼的方式來啓動。
此外,Kafka的啓動類是「kafka.Kafka」,他是要讀取「server.properties」文件的,必須給他指定這個文件的所在位置才能夠,在idea右上方的啓動菜單欄裏,有一個「Run」菜單,點擊後,裏面有一個「Edit Configuration」菜單,點擊這個
image.png
出現上圖以後,選擇「+」號,而後選擇「Application」,「Name」輸入爲「Kafka」,「Main Class」輸入爲「kafka.Kafka」,「Program arguments」輸入爲「config/server.properties」,「use classpath of module」輸入爲「c!
image.png

8.啓動kafka

8.1 先啓動一個zk.

啓動zk參考:虛擬機-zookeeper集羣搭建:https://segmentfault.com/a/11...

8.2 運行application

首次啓動時候會有一個漫長等待過程
image.png

啓動後效果:
kafka的數據文件生成:
image.png
kafka日誌文件生成:
image.png

相關文章
相關標籤/搜索