Kafka is a distributed,partitioned,replicated commit logservice。它提供了类似于JMS的特性,但是在设计实现上完全不同,此外它并不是JMS规范的实现。kafka对消息保存时根据Topic进行归类,发送消息者成为Producer,消息接受者成为Consumer,此外kafka集群有多个kafka实例组成,每个实例(server)成为broker。无论是kafka集群,还是producer和consumer都依赖于zookeeper来保证系统可用性集群保存一些meta信息。
今天我们先从搭建Kafka源码环境入手。
1.gradle安装
2.下载apache kafka源代码
3.用gradle构建产生IDEA工程文件
执行如下命令:
![](https://i-blog.csdnimg.cn/blog_migrate/1200cfa95dfbf20fba7107d54c18e967.webp?x-image-process=image/format,png)
![](https://i-blog.csdnimg.cn/blog_migrate/6c4f6eca6761be47430656eef05e3303.webp?x-image-process=image/format,png)
经过几分钟的编译后,出现Build Successful表示源码编译下载成功。
生成IDEA工程文件如下:
![](https://i-blog.csdnimg.cn/blog_migrate/29a9e5d0b84180aa49bab5bc75cdc67a.webp?x-image-process=image/format,png)
5.IDEA中查看源码工程
![](https://i-blog.csdnimg.cn/blog_migrate/409121ed0bd34eb9de26b474a3560820.webp?x-image-process=image/format,png)
6.Kafka启动时,参数设置
![](https://i-blog.csdnimg.cn/blog_migrate/f969536593d0944f25e8c71c264927b2.webp?x-image-process=image/format,png)
7、在编译运行时可能出现的问题
错误: -source 1.6 中不支持 diamond 运算符
解决办法是:使用jdk1.7来编译,
![](https://i-blog.csdnimg.cn/blog_migrate/16a7d46b287235f9d38d00339bc22b56.webp?x-image-process=image/format,png)
这样就可以启动调试Kafka源码了。是不是很简单。