寫在前面
- 用到了kafka, 因而藉機會看看代碼, 順便複習下Scala, 看到一半, 換電腦了, 搭環境有搭了半天, 因此記錄下. 注意這裏是0.8.2.2版本, 由於公司用的就是這個版本.
依賴的軟件
- Git
- ScalaIDE(4.4.1)
- Gradle
- ZooKeeper
環境搭建
- 下載源碼並切換分支到0.8.2.2版本:
git clone git@github.com:apache/kafka.git
git checkout -b 0.8.2.2 0.8.2.2
- 安裝配置Gradle
- 下載解壓Gradle壓縮包, 並配置GRADLE_HOME和PATH, (能夠經過GRADLE_USER_HOME指定jar包下載地址)
- 添加全局配置文件(GRADLE_HOME/init.d/init.gradle), 優先使用本地Maven倉庫.
allprojects {
repositories {
mavenLocal()
maven{ url 'your nexus'}
mavenCentral()
}
}
- 安裝ZooKeeper(略)
- 將Kafka源碼轉換爲eclipse工程
#切換到kafka代碼目錄
gradle
./gradlew eclipse
- 將Kafka工程導入到ScalaIDE中.
- 先導入kafka/clients項目(core項目依賴clients)
- 再導入kafka/core項目
- clients是Java代碼不用配置.
- core是Scala項目, 由於0.8.2比較老, 因此要設置Scala編譯級別爲2.10(項目屬性->Scala Compiler->勾上Use Project Settings->Scala Installation 選擇2.10)
- 而後clean下, 反正我是挺順利的~~~
運行源碼
- 啓動ZooKeeper
- 主類在
/core/src/main/scala/kafka/Kafka.scala
- 修改Kafka.scala文件設置kafka使用的配置文件, 和日誌文件配置(經過手動設置main方法參數, 和系統參數來實現)
def main(args: Array[String]): Unit = {
val args = Array("""C:\projects\kafka08\kafka\core\conf\server.properties""")
System.setProperty("log4j.configuration", """file:C:\projects\kafka08\kafka\core\conf\log4j.properties""")
//下面的不修改
}
- kafka是經過腳原本中止的, 因此這裏debug, 爲了不每次都殺進程, 因此修改下, 這樣能夠經過控制檯回車就能夠正常關閉kafka了.
//註釋掉awaitShutdown方法調用, 修改成in.read(), 而後調用shutdown
def main(args: Array[String]): Unit = {
kafkaServerStartable.startup
//kafkaServerStartable.awaitShutdown
System.in.read()
kafkaServerStartable.shutdown()
}
- 好了, 如今能夠右鍵 Run As Scala Application運行了