当前位置: 首页 > news >正文

Kafka源码分析环境搭建

Kafka源码分析环境搭建

使用截止目前为止Kafka的最新版本3.3.1版本的源码进行环境搭建

Kafka源码下载

从kafka官网下载kafka-3.3.1版本的源码

http://kafka.apache.org/downloads

解压(要放到英文目录,不然会报一些奇怪的错误)

Scala安装

因为在源码中配置的scala版本是2.13.8

以我们在win上安装Scala 2.13,上官网找到2.13.8版本对应的下载地址

Scala 2.13.8 | The Scala Programming Language

然后就可以下载win上的安装包,scala.msi,下载好之后傻瓜式安装就可以了

在cmd中输入scala如果出现如下提示则安装成功

idea版本选择与Scala插件

因为最终要使用ide来导入,同时最新版本的kafka源码构建必须是gradle是高版本,所以IDE也必须是高版本才支持高版本的 gradle,所以这里推荐使用IntelliJ IDEA 2020.3.4 版本。

从这里可以看出gradle是6.7,版本已经够支持了。

安装Scala插件。

进入IntelliJ IDEA的这个界面

左侧有一个“Plugins”,搜索scala相关的插件,此时一开始是找不到的,然后点击“search in repositories”,找到一个“Scala”插件,他的类别是“Language”,在线装即可,他会下载之后安装

Gradle的安装

接着需要安装Gradle,现在国外很多知名的开源项目,Kafka是用Gradle来进行项目的构建了,所以需要安装。

我的IDE的版本支持的是gradle是

Gradle来完成Kafka源码的构建,使用gradle 7.6,从官网下载,解压缩即可,然后配置GRADLE_HOME和PATH

https://gradle.org/releases/

配置环境变量,新建 GRADLE_HOME 环境变量指向你的 Gradle 解压路径

然后将 %GRADLE_HOME%\bin 添加到 Path 环境变量中,然后点击确定

验证gradle是否安装成功,打开cmd命令行输入 gradle -v

最后 验证三个基础的依赖都正确安装了

java -version scala -version gradle -version

使用Gradle来构建Kafka源码

通过win命令行进入kafka-3.3.1-src目录下,然后执行“gradle idea”为源码导入idea进行构建

这个过程会下载大量的依赖jar包,建议配置 gradle 版本库为阿里源(不然会很慢,同时还可能抛出无法下载错误),同时也要修改对应的配置文件。

编辑Kafka源码目录下的build.gradle文件

1、修改阿里源

maven { url 'https://maven.aliyun.com/repository/public' }

2、修改配置(防止构建报错)

ScalaCompileOptions.metaClass.daemonServer=true ScalaCompileOptions.metaClass.fork=true ScalaCompileOptions.metaClass.useAnt=false ScalaCompileOptions.metaClass.useCompileDaemon=false

3、构建成功

安装完了在plugins里面就可以找到scala插件了,然后点击“ok”就会提示你重启intellij idea来激活安装好的插件,然后点击里面的那个Import Project按钮即可,选择你的kafka源码所在的目录,选择你构建项目的方式是“gradle”,导入的过程也需要不少的时间,需要耐心等待,会显示的是如下的图:

在IDEA中启动Kafka

我们肯定是要看到log4j输出的日志的,所以必须把config目录下的log4j.properties给放到src/main/scala目录下去,这样才能看到服务端运行起来的程序打印出来的日志

另外需要修改 config目录下的server.properties

之前IDE的Scala版本偏老,运行时会出现这个错误

那么手动更新scala的版本

https://plugins.jetbrains.com/plugin/1347-scala/versions/stable

缺少包slf4j-nop,导入该包。

slf4jnop: "org.slf4j:slf4j-nop:$versions.slf4j",

compileOnly libs.slf4jnop
http://www.jsqmd.com/news/1356998/

相关文章:

  • 企业需求分级管理:从理论到实践的完整指南
  • Navicat数据库管理工具八大核心亮点深度解析
  • Excel项目管理模板与专业工程系统的技术边界与选型策略
  • 从10ms到0.1ms:小语言模型在6G边缘的延迟-精度-大小三角博弈
  • 旋转:IMRoPE朴素
  • 用DeepSeek给Qt私有协议自动生成QWidget表单?一套「XML描述+AI代码补全」的联动工作流
  • 总结 8.08
  • 零成本容器化部署实战:从Dockerfile到Serverless应用托管
  • Godot地形插件深度对比:轻量级高度图方案为何是独立开发首选?
  • AI Agent如何重塑软件开发:从代码生成到自主规划的技术演进
  • AI Agent时代的基础设施重构:从确定性API到智能体优先的架构演进
  • 2026 年现阶段,随州比较好的ai获客系统公司怎么联系,别再发传单求客户了,这玩意儿让同行都来问获客的门道 - 行业鉴选官
  • IPC_LOG与DYN_DEBUG:分布式系统通信监控实战解析
  • ComfyUI 2026保姆级安装指南:从零部署到高效AI绘画
  • 显现的螺旋:空泡、灰度与不可抵达的无穷
  • AI编程助手实战指南:从焦虑到高效协作的开发者进化之路
  • AI设计工作流实战:从Figma到代码的自动化生成与协作
  • 哈希表在Two Sum问题中的高效应用与优化
  • 【Bug已解决】OSError: You are trying to access a gated repo. 解决方案
  • SpringBoot+Vue构建榆林旅游网站管理系统的实战经验
  • Matlab热网建模与多区域能源系统优化实践
  • 62. drf之序列化组件的高阶用法
  • 归一化:RMSNorm朴素
  • 二十瓦的灰度:为什么我们反对批量复制意识与创造数字生命
  • css弹性布局,以及html总结
  • 二叉搜索树(BST)原理与高效实现指南
  • 企业远程协助安全管控方案解析与实践
  • 微服务架构性能调优实战指南
  • 深入解析Mach-O文件中的__LINKEDIT段
  • Oracle表空间监控SQL脚本与扩容方案