最近闲来无聊,研究了一下 消息队列 kafka,拜读了其源代码。
阅读源代码的准备:
1. 由于kafka 使用scala 这种语言编写,所以想要看的更人性化一些,请安装 scala ide 自己谷歌一下, 建议到官网上下, 这是一个scala 的 eclipse 插件,一定注意下载跟自己eclipse 版本配套的插件, 如果你确定能用记事本看, 可以无视这一点。
2. 下载kafka , 并到目录下,执行 ./sbt 下载依赖,在 core 目录下,有kafka 的源代码, 看目录结构很显然是个maven 工程,不过没找到pom.xml , 不过这个问题不是问题。找到源代码之后, 在eclipse 中 新建一个 scala project , 然后源代码搞进来, 还有一步是找依赖, 是的,在core\lib_managed\scala_2.8.0\compile 下有你想要的一切。
好,咱们开始!
def main(args: Array[String]): Unit
main是万恶之源, 咱们就从这里开始。
val props = Utils.loadProps(args(0))
val serverConfig = new KafkaConfig(props)
这里加载一些乱七八糟的配置,即是用了 config 目录下的配置。
val kafkaServerStartble = new KafkaServerStartable(serverConfig)
这句相当于初始化整个 kafka
Runtime.getRuntime().addShutdownHook(new Thread() {
override def run() = {
kafkaServerStartble.shutdown
kafkaServerStartble.awaitShutdown
}
});
给jvm 加上一个hook ,此方法的作用是让jvm 在退出之前干这个, 干什么的 ,shutdown kafka。
kafkaServerStartble.startup
kafkaServerStartble.awaitShutdown
好, kafka开始。
over
外衣脱掉了,是否索然无味, 是的, 我也这么认为,下一章着重讲讲,kafka broker 启动都干了些什么。