在Windows环境IDEA下Kafka源码编译
Posted 顧棟
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Windows环境IDEA下Kafka源码编译相关的知识,希望对你有一定的参考价值。
文章目录
Kafka 1.1版本在Windows环境IDEA下的源码编译
本文帮助大家 在Windows环境下 进行Kafka源码的编译和单机模式的运行,方便运行调试,源码阅读和功能学习。
一、确认所需软件版本
- 可以通过查询Kafka文档,确定java version。
- 官方仓库地址,进入仓库选择对应的分支,打开文件
gradle.properties
确认scala
版本scalaVersion=2.11.12
。打开文件gradle/dependencies.gradle
,确认版本zookeeper: "3.4.10"
,gradle: "4.8.1"
二、安装软件
1. 安装JDK 1.8
下载地址Oracle版 https://www.oracle.com/java/technologies/javase-downloads.html
安装详细 无
2. 安装Gradle 4.8
下载地址 https://gradle.org/releases/
安装详细 无
为了解决中央仓库的网络问题。建议进行以下配置,在gradle
解压后,找到文件夹init.d
,在里面新建文件init.gradle
,文件中添加以下内容。
allprojects{
repositories {
maven{ url 'https://maven.aliyun.com/repository/google'}
maven{ url 'https://maven.aliyun.com/repository/gradle-plugin'}
maven{ url 'https://maven.aliyun.com/repository/public'}
maven{ url 'https://maven.aliyun.com/repository/jcenter'}
def REPOSITORY_URL = 'https://maven.aliyun.com/repository/public'
all {
ArtifactRepository repo ->
if (repo instanceof MavenArtifactRepository) {
def url = repo.url.toString()
if (url.startsWith('https://artifacts.elastic.co/maven')
|| url.startsWith('https://repo1.maven.org/maven2')
|| url.startsWith('https://repo.maven.org/maven2')
|| url.startsWith('https://jcenter.bintray.com/')
|| url.startsWith('https://repo.maven.apache.org/maven2')) {
project.logger.lifecycle "Repository ${repo.url} replaced by $REPOSITORY_URL."
remove repo
}
}
}
maven {
url REPOSITORY_URL
}
}
}
此方式没有采用本地的maven仓库。如果有需要,可以自行配置。
3. 安装Scala 2.11.12
下载地址 https://www.scala-lang.org/download/all.html
安装详细 无
4. 安装Zookeeper单机模式 3.4.9
下载地址 https://archive.apache.org/dist/zookeeper/
安装详细 无
在Zookeeper安装包解压后,找到conf
文件夹下,新增zoo.cfg
文件,文件增加配置,其中dataDir
和dataLogDir
可以自行调整。
tickTime=2000
initLimit=10
syncLimit=5
dataDir=E://tmp//zookeeper//data//1
dataLogDir=E://tmp//zookeeper//datalog//1
clientPort=2181
5. IDEA安装Scala插件
推荐采用离线安装方式
下载地址 https://plugins.jetbrains.com/plugin/1347-scala/versions
安装详细 无
三、源码编译
利用IDEA打开源码文件夹,默认会进行编译,此时取消编译,对IDEA进行配置后重新编译。
1. 配置IDEA
-
配置JDK
-
指定Gradle版本
图中gradle user home
和User gradle from
按照自己目录修改。 -
指定scala
2. 编译
此时编译成功,如果只需要阅读代码,到此时,以及可以正常的使用IDEA看代码了。
四、单机模式启动
1. 启动ZK
直接运行zk解压后的bin
文件夹下的zkServer.cmd
。
2. 启动kafka
-
修改kafka配置文件
config/server.propertie
除了以下修改,其他采用默认。listeners=PLAINTEXT://127.0.0.1:9092 advertised.listeners=PLAINTEXT://127.0.0.1:9092 zookeeper.connect=localhost:2181/kafka
-
配置启动application
在program argument中填写config/server.properties
。 -
启动出现 问题一,见文章目录导航
-
启动出现 问题二,见文章目录导航
-
最后启动成功
3. 验证是否可以成功服务
-
创建topic
--zookeeper localhost:2181/kafka --create --topic test20210610001 --replication-factor 1 --partitions 1
此时创建了一个名为test20210610001的topic且分区数1 副本数1。 -
消费
--bootstrap-server 127.0.0.1:9092 --topic test20210610001
此时开启了一个消费端,消费test20100610001这个topic。 -
生产
--broker-list 127.0.0.1:9092 --topic test20210610001
此时创建了一个生产者,将消息写入test20210610001这个topic。 -
结果
查看消费者客户端,发现可以正常消费。
五、问题
问题一
> Task :core:Kafka.main() FAILED
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
说明core模块缺少slf4jjar,解决方案不唯一,本人采用以下方式
在project(’:core’) 下的 dependencies 中增加
compile group: 'org.slf4j', name: 'slf4j-api', version: '1.7.25'
compile group: 'org.slf4j', name: 'slf4j-log4j12', version: '1.7.25'
问题二
> Task :core:Kafka.main() FAILED
log4j:WARN No appenders could be found for logger (kafka.utils.Log4jControllerRegistration$).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
说明core模块缺少log4j.prperties
,解决方案不唯一,本人采用以下方式
在core模块下main新建 resource,将config
文件夹下的log4j.prperties
拷贝进来即可。
专栏导航
以上是关于在Windows环境IDEA下Kafka源码编译的主要内容,如果未能解决你的问题,请参考以下文章