Kafka源碼調試環境搭建

寫在前面

  1. 用到了kafka, 因而藉機會看看代碼, 順便複習下Scala, 看到一半, 換電腦了, 搭環境有搭了半天, 因此記錄下. 注意這裏是0.8.2.2版本, 由於公司用的就是這個版本.

依賴的軟件

  1. Git
  2. ScalaIDE(4.4.1)
  3. Gradle
  4. ZooKeeper

環境搭建

  1. 下載源碼並切換分支到0.8.2.2版本:
git clone git@github.com:apache/kafka.git
git checkout -b 0.8.2.2 0.8.2.2
  1. 安裝配置Gradle
    1. 下載解壓Gradle壓縮包, 並配置GRADLE_HOME和PATH, (能夠經過GRADLE_USER_HOME指定jar包下載地址)
    2. 添加全局配置文件(GRADLE_HOME/init.d/init.gradle), 優先使用本地Maven倉庫.
    allprojects {
        repositories {
            mavenLocal()
            maven{ url 'your nexus'}
            mavenCentral()
        }
    }
  2. 安裝ZooKeeper(略)
  3. 將Kafka源碼轉換爲eclipse工程
#切換到kafka代碼目錄
gradle
./gradlew eclipse
  1. 將Kafka工程導入到ScalaIDE中.
    1. 先導入kafka/clients項目(core項目依賴clients)
    2. 再導入kafka/core項目
    3. clients是Java代碼不用配置.
    4. core是Scala項目, 由於0.8.2比較老, 因此要設置Scala編譯級別爲2.10(項目屬性->Scala Compiler->勾上Use Project Settings->Scala Installation 選擇2.10)
    5. 而後clean下, 反正我是挺順利的~~~

運行源碼

  1. 啓動ZooKeeper
  2. 主類在/core/src/main/scala/kafka/Kafka.scala
  3. 修改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""")
    //下面的不修改
}
  1. kafka是經過腳原本中止的, 因此這裏debug, 爲了不每次都殺進程, 因此修改下, 這樣能夠經過控制檯回車就能夠正常關閉kafka了.
//註釋掉awaitShutdown方法調用, 修改成in.read(), 而後調用shutdown
def main(args: Array[String]): Unit = {
    kafkaServerStartable.startup
    //kafkaServerStartable.awaitShutdown
    System.in.read()
    kafkaServerStartable.shutdown()
}
  1. 好了, 如今能夠右鍵 Run As Scala Application運行了
相關文章
相關標籤/搜索