idea启动kafka源码

构建篇

1.windows

1.1前提准备,基于zookeeper下kafka源码构建启动

|-----------|------------|----------------------------------------------|
| 前提条件 | 版本 | 注意 |
| jdk | 21 | |
| scala | 2.12.8 | |
| gradle | 8.10.2 | |
| zookeeper | 3.8.5 | 这里有坑,zookeeper要和kafka的版本匹配,不然启动不报错,但是实际会没起起来 |
| kafka | 3.9.1.-rc2 | |
| | | |

开源镜像地址下载zookeeper,阿里镜像下载地址-zookeeper-3.8.5,直接用windows解压会报错,使用tar -zxvf解压

复制代码
tar -zxvf apache-zookeeper-3.8.5-bin.tar.gz

#进入 conf目录
mv zoo_sample.cfg zoo.cfg

#修改zoo.cfg下的dataDir,配置路径
dataDir=D:/sourceCode/zookeeper/data

windows环境直接双击zkServer.cmd启动

1.2.本地构建kafka源码

先去github,gitclone源码地址

可以先git切换到对应的分支,然后在idea中导入kafka

我建议先用命令行执行构建,从我的个人使用上来说,更快

复制代码
./gradlew clean build -x test

在core模块下的scala的kafka的main方法里面添加日志,方便观察

复制代码
println(">>>Starting Kafka<<<")

1.3脚本验证

验证kafka topic list

复制代码
./kafka-topics.sh --list --bootstrap-server 127.0.0.1:9092

创建topic

复制代码
./kafka-topics.sh --create --bootstrap-server 127.0.0.1:9092 --replication-factor 1 --partitions 1 --topic test

1.4异常提示

复制代码
> Task :core:Kafka.main()
>>>Starting Kafka<<<
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.
SLF4J: Failed to load class "org.slf4j.impl.StaticMDCBinder".
SLF4J: Defaulting to no-operation MDCAdapter implementation.
SLF4J: See http://www.slf4j.org/codes.html#no_static_mdc_binder for further details.

不管千问,Stack Overflow等去查,都不太能找到问题。最后还是回归到这个提示。

答案藏在:http://www.slf4j.org/codes.html#StaticLoggerBinder 上

开篇第一段就提示了:

Placing one (and only one) of the many available providers such as slf4j-nop.jar slf4j-simple.jar , slf4j-reload4j.jar , slf4j-jdk14.jar or logback-classic.jar on the class path will solve the problem.

替换slf4j-nop.jar slf4j-simple.jar , slf4j-reload4j.jar , slf4j-jdk14.jar 其中之一就可以了,于是我们可以在kafka源码下的gradle文件夹下dependencies.gradle的version\[\]配置下添加

log4j_fix: "1.7.36"

在libs+\[\]配置下添加

log4jFix:"org.slf4j:slf4j-log4j12:$versions.log4j_fix"

然后在build.gradle文件,找到project(':core')配置,添加以下配置

implementation libs.log4jFix

1.5启动kafka

然后找到源码下,core模块,scala文件夹下的kafka,点击启动

相关推荐
2601_962106642 小时前
【Java Set综合实战】商品管理系统 + 图书收藏系统|Product、Book自定义类全套代码
java
RuoyiOffice3 小时前
SpringBoot+Vue3 凭证生命周期设计:审核、过账、冲销与反过账怎样保持账目一致
java·spring boot·事务·springboot3·财务系统·会计凭证·ruoyi office
2601_962106643 小时前
HashMap入门|工号-姓名键值存储、两种遍历方式、根据key/value查
java
杨凯凡4 小时前
Spring Framework 7 API 版本管理实战:请求头路由、兼容迁移与废弃策略
java·rest api·springframework·spring boot 4·api版本管理
T_Wizard4 小时前
同一个问题写了 4 遍:官方 SDK / HTTP / Spring AI / LangChain4j,到底该选哪个
java·ai编程
hai_android4 小时前
AudioTrack 深度解析:从原理到实战
android·java·kotlin
斯维赤5 小时前
限流、熔断、降级,你真的分得清吗?
java·后端·架构
aiks_yuan7 小时前
Java CPU 100% 怎么排查:JDK 11 起 jstack 自带线程 CPU 时间,不用再 top -H 换算十六进制(JDK 8、11、17 实测)
java
我不会起名字3228 小时前
消费回调固定 return nil:错误传播与 Kafka 位点提交的区别
后端·mongodb·kafka·go·im·故障排查
Flynn Liang9 小时前
AiServices 源码级拆解:一个接口如何变成 RAG Agent
java·langchain·源码分析·rag·langchain4j·aiservices