在windows系统下使用IDEA对kafka源码进行编译环境搭建以及配置

2023-11-20

一、 前期准备工作

step1:安装JDK1.8

关于jdk的安装比较简单,不过需要注意配置环境变量

step2:安装zookeeper单机版

因为kafka的运行需要在zookeeper的基础上进行,因此我们只需要简单的安装一个单机版的zookeeper即可。

目录结构如下:
- E:\zookeeper\data
- E:\zookeeper\zookeeper-3.4.12

1. 下载zookeeper 3.4.12 下载地址
2. 解压缩即可,具体的存放位置是E:\zookeeper\zookeeper-3.4.12
3. 进入目录E:\zookeeper\zookeeper-3.4.12\conf 对配置文件进行修改,复制zoo_sample.cfg文件并重命名为zoo.cfg,添加如下代码。

dataDir=e:\\zookeeper\\data
server.1=your IP:2888:3888

4.在bin文件夹下双击zkServer.cmd启动zookeeper
5.将bin文件夹目录添加到系统path中

step3: 安装Gradle-5.4

1 下载gradle 下载地址 ,注意选择binary-only
2 解压缩即可,并将bin文件夹目录添加到系统path中

step4:安装scala-2.11.12

1.下载scala下载地址,注意windows安装可以下载.msi文件格式的,下载之后根据提示直接安装(类似于普通app安装手法)
2. 将bin文件夹目录添加到系统path中


二、 将kafka源代码部署到编辑器IDEA并测试

step1:将kafka源码部署到IDEA

本次使用的编辑器是IntelliJ IDEA编辑器,使用的具体方法直接从git上克隆源代码。
具体的克隆源代码方法参考博客
然后在IDEA编辑器Terminal中执行:gradle idea

当然也可以自己离线下载源码包,然后进入源码根目录,执行命令gradle idea也可以,最后将编译好的文件导入IDEA即可。

导入IDEA之后的目录结构如下所示:
kafka源码目录结构

源码最主要的部分是core模块的内容

模块名 说明
admin kafka的管理员模块,操作和管理其topic,partition相关,包含创建,删除topic,或者拓展分区等。
api 主要负责数据交互,客户端与服务端交互数据的编码与解码。
cluster 这里包含多个实体类,有Broker,Cluster,Partition,Replica。其中一个Cluster由多个Broker组成,一个Broker包含多个Partition,一个Topic的所有Partition分布在不同的Broker中,一个Replica包含都个Partition。
common 这是一个通用模块,其只包含各种异常类以及错误验证。
consumer 消费者处理模块,负责所有的客户端消费者数据和逻辑处理。
controller 此模块负责中央控制器的选举,分区的Leader选举,Replica的分配或其重新分配,分区和副本的扩容等。
coordinator 负责管理部分consumer group和他们的offset。
log 这是一个负责Kafka文件存储模块,负责读写所有的Kafka的Topic消息数据。
message 封装多条数据组成一个数据集或者压缩数据集。
metrics 负责内部状态的监控模块。
network 该模块负责处理和接收客户端连接,处理网络时间模块。
security 负责Kafka的安全验证和管理模块。
serializer 序列化和反序列化当前消息内容。
server 该模块涉及的内容较多,有Leader和Offset的checkpoint,动态配置,延时创建和删除Topic,Leader的选举,Admin和Replica的管理,以及各种元数据的缓存等内容。
tools 阅读该模块,就是一个工具模块,涉及的内容也比较多。有导出对应consumer的offset值;导出LogSegments信息,以及当前Topic的log写的Location信息;导出Zookeeper上的offset值等内容。
utils 各种工具类,比如Json,ZkUtils,线程池工具类,KafkaScheduler公共调度器类,Mx4jLoader监控加载器,ReplicationUtils复制集工具类,CommandLineUtils命令行工具类,以及公共日志类等内容。

step2: 对Kafka源码编译执行

1.首先双击E:\zookeeper\zookeeper-3.4.12\bin目录下的zkServer.cmd启动zookeeper(不能关闭执行框,否则就关闭服务了),执行结果如下。在这里插入图片描述
2. 在idea中安装scala插件,Settings->plugins->scala 查看版本是2018.2.11,确保gradle.properties配置文件中的scalaVersion与安装的一致
3. 在kafka服务端使用log4j输出日志,启动前需要把log4j.properties配置文件放置到core\src\main\scala路径下,如果编译之后还是无法打印log信息,将文件在复制一份到core\out\production\classes\目录下,然后运行程序,这样才能正确输出日志信息,此log4j.properties文件可以从config目录中获取。
4. 修改kafka/config/server.properties文件,添加或修改如下两处代码。

#自己选择一个合适的输出log的文件夹即可,注意在window系统下新建的文件夹最好不要命名带空格,例如"IDEA workspace" ,中间有空格可能会导致IDEA发生java.nio.file.NoSuchFileException: F:IDEA ,其实是命名当中的空格后面的内容没有识别才会出现文件无法找到的错误,被坑了,谨记
log.dirs=F:\\IDEA\\log  
#请自己将你本机的IP地址填入 
zookeeper.connect=your IP:2181

5 配置run/debug configuration
点击run->run/debug configrations或者edit configrations
点击+号,选择Application
进行如下的配置:
(1)启动kafka系统的配置
在这里插入图片描述
(2)创建topic的配置
在这里插入图片描述

(3)console口生产数据的配置
在这里插入图片描述
(4)console口消费数据的配置
在这里插入图片描述

  1. 点击IDEA的run,分别执行kafka、consumer、producer,同时在producer的控制台中输入数据,可以在consumer的控制台中收到。kafka启动成功
    生产者产生消息
    消费者消费数据

三、 将修改过的Kafka源代码发布成binary 版本

通常我们在linux运行kafka集群,使用的是binary版本,分别分为Scala2.11和Scala2.12版本的,如下图所示
在这里插入图片描述

step1:执行命令

在IDEA编辑器Terminal中执行:

  • gradle wrapper
  • gradlew releaseTarGz或者./gradlew releaseTarGz

gradle wrapper命令:
下载 wrapper 包,命令执行成功后,会在 kafka 源码包的 gradle 目录下生 成一个 wrapper 目录,其中包括gradle-wrapper.jar和gradle-wrapper.properties两个文件
gradlew releaseTarGz命令:
编译完之后将会在core/build/distributions/里面生成 kafka_2.12-2.2.0-SNAPSHOT.tgz 压缩包文件,这个和从网上下载的一样,可以直接用。
在这里插入图片描述

四、错误总结

错误一

出现:SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
解决:参考错误提示网址
具体做法:
1.下载相应的jar包,slf4j-log4j12.jar + Log4j.jar
2.导入jar包
具体的IDEA操作如下:
(1)File -> Project Structure -> Modules
(2)找到 core,core_main,打开 dependencies,点击 +,添加 sl4j-log4j12.jar、log4j. jar

错误二

出现:在producer的控制台上输入但是在consumer上没有收到消息
解决:端口和防火墙的问题
具体做法:
1.保证计算机的防火墙关闭
2.在设置run/debug configurations的时候需要保证端口相同,这个可以自己试试

错误三

出现:java.nio.file.NoSuchFileException: F:IDEA
解决:windows项目文件夹命名中带有空格
具体过程:原先的windows项目命名是IDEA worksapce,然后执行kafka的时候发现出现错误,并且提示找不到文件,因此将windows项目重命名为IDEA,再次执行,启动成功。
建议:文件夹的命名尽量使用英文并且不要带空格等不易识别的字符

错误四

出现:执行源码(即第二模块下的step2的第五步)出现错误,消费者无法执行
解决:这个问题与错误二类似,是填写的run/debug configures有问题
具体过程:请注意新版本的kafka和旧版本的kafka使用的命令是不一样的,例如旧版本的消费者使用--zookeeper参数指定zookeeper的地址,但是对于新版本的消费者需要使用--bootstrap-server参数指定broker的主机名和端口。
建议:关注kafka版本变化,使用对应版本的命令和功能。

错误五

出现:在ubuntu16.04上执行kafka_2.12-2.2.0-SNAPSHOT,出现如下错误
-bash: ./kafka-server-start.sh: /bin/bash^M: 解释器错误: 没有那个文件或目录
解决:参考博客,可以使用该博客的方法解决,但是以后会出现很多这样的情况,最后决定将所有的项目重新迁移到ubuntu系统上进行
具体过程:这个文件在Windows 下编辑过,在Windows下每一行结尾是\n\r,而Linux下则是\n

错误六

出现:将项目迁移到ubuntu系统上在idea编辑器上进行编译,执行命令gradle idea的时候出现如下错误

lala@lala-Lenovo:~/test/kafka$ gradle idea
To honour the JVM settings for this build a new JVM will be forked. Please consider using the daemon: https://docs.gradle.org/2.10/userguide/gradle_daemon.html.

FAILURE: Build failed with an exception.

* Where:
Build file '/home/lala/test/kafka/build.gradle' line: 57

* What went wrong:
A problem occurred evaluating root project 'kafka'.
> Failed to apply plugin [id 'org.owasp.dependencycheck']
   > Could not create task of type 'Analyze'.

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

BUILD FAILED

出现这个的原因是在ubuntu上安装的gradle版本太低(使用命令sudo apt-get install gradle,安装的是2.7版本),但是kafka要求(参照)5.0以上,因此重新安装了gradle,执行成功
在这里插入图片描述

错误七

出现:执行run-kafka时候(即第二模块下的step2的第6步),出现错误如下

log4j:ERROR setFile(null,true) call failed.
java.io.FileNotFoundException: /logs/server.log (没有那个文件或目录)
	at java.io.FileOutputStream.open0(Native Method)
	at java.io.FileOutputStream.open(FileOutputStream.java:270)
	.......(省略)
	at kafka.utils.Logging.$init$(Logging.scala:47)
	at kafka.Kafka$.<init>(Kafka.scala:30)
	at kafka.Kafka$.<clinit>(Kafka.scala)
	at kafka.Kafka.main(Kafka.scala)
log4j:ERROR Either File or DatePattern options are not set for appender [stateChangeAppender].

解决:参考stack overflow
将log4j.propertties中有关路径的地方改成绝对路径即可

log4j.appender.kafkaAppender=org.apache.log4j.DailyRollingFileAppender
log4j.appender.kafkaAppender.DatePattern='.'yyyy-MM-dd-HH
log4j.appender.kafkaAppender.File=${kafka.logs.dir}/logs/server.log   //更改此行
log4j.appender.kafkaAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.kafkaAppender.layout.ConversionPattern=[%d] %p %m (%c)%n

log4j.appender.stateChangeAppender=org.apache.log4j.DailyRollingFileAppender
log4j.appender.stateChangeAppender.DatePattern='.'yyyy-MM-dd-HH
log4j.appender.stateChangeAppender.File=${kafka.logs.dir}/logs/state-change.log   //更改此行
log4j.appender.stateChangeAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.stateChangeAppender.layout.ConversionPattern=[%d] %p %m (%c)%n

log4j.appender.requestAppender=org.apache.log4j.DailyRollingFileAppender
log4j.appender.requestAppender.DatePattern='.'yyyy-MM-dd-HH
log4j.appender.requestAppender.File=${kafka.logs.dir}/logs/kafka-request.log    //更改此行
log4j.appender.requestAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.requestAppender.layout.ConversionPattern=[%d] %p %m (%c)%n

log4j.appender.cleanerAppender=org.apache.log4j.DailyRollingFileAppender
log4j.appender.cleanerAppender.DatePattern='.'yyyy-MM-dd-HH
log4j.appender.cleanerAppender.File=${kafka.logs.dir}/logs/log-cleaner.log    //更改此行
log4j.appender.cleanerAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.cleanerAppender.layout.ConversionPattern=[%d] %p %m (%c)%n

log4j.appender.controllerAppender=org.apache.log4j.DailyRollingFileAppender
log4j.appender.controllerAppender.DatePattern='.'yyyy-MM-dd-HH
log4j.appender.controllerAppender.File=${kafka.logs.dir}/logs/controller.log    //更改此行
log4j.appender.controllerAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.controllerAppender.layout.ConversionPattern=[%d] %p %m (%c)%n

log4j.appender.authorizerAppender=org.apache.log4j.DailyRollingFileAppender
log4j.appender.authorizerAppender.DatePattern='.'yyyy-MM-dd-HH
log4j.appender.authorizerAppender.File=${kafka.logs.dir}/logs/kafka-authorizer.log    //更改此行
log4j.appender.authorizerAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.authorizerAppender.layout.ConversionPattern=[%d] %p %m (%c)%n

错误八

出现:执行gradlew releaseTarGz时候,出现错误如下

  gradlew releaseTarGz
未找到 'gradlew' 命令,您要输入的是否是:
命令 'gradle' 来自于包 'gradle' (universe)
gradlew:未找到命令

解决:将命令改成./gradlew releaseTarGz
原因:windows版本的命令和linux下的命令不尽相同


有什么错误的地方请尽情的指出,也欢迎交流,完毕!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在windows系统下使用IDEA对kafka源码进行编译环境搭建以及配置 的相关文章

  • 【CentOS7离线ansible-playbook自动化安装CDH5.16(内附离线安装包地址,及自动化脚本)】

    CentOS7 离线环境 使用ansible自动部署CDH5 16 前言 本文介绍如何使用作者开发的自动化脚本 离线部署cdh集群 只需要简单的配置下yum源和cdh集群节点IP等几个参数 就可实现一键部署cdh集群 省去配置mysql n
  • Zookeeper的常见面试题

    1 Zookeeper 1 1 Zookeeper基本概念 Zookeeper作为一个优秀高效且可靠的分布式协调框架 ZooKeeper 在解决分布式数据一致性问题时并没有直接使用Paxos算法 而是专门定制了一致性协议叫做 ZAB Zoo
  • librdkafka的使用和介绍

    librdkafka的使用介绍 librdkafka是kafka的c语言接口 下面简单的介绍一下其接口 1 rd kafka conf set设置全局配置 2 rd kafka topic conf set设置topic配置 3 rd ka
  • cdh下spark2-yarn运行sparkstreaming获取kafka数据使用spark-streaming-kafka-0-10_2.11报错解决

    报错问题 20 07 15 17 20 51 INFO utils AppInfoParser Kafka version 0 9 0 kafka 2 0 0 20 07 15 17 20 51 INFO utils AppInfoPars
  • kafka如何避免消费组重平衡

    目录 前言 协调者 重平衡的影响 避免重平衡 重平衡发生的场景 参考资料 前言 Rebalance 就是让一个 Consumer Group 下所有的 Consumer 实例就如何消费订阅主题的所有分区达成共识的过程 在 Rebalance
  • Kafka【命令行操作】

    Kafka 命令行操作 Kafka 主要包括三大部分 生产者 主题分区节点 消费者 1 Topic 命令行操作 也就是我们 kafka 下的脚本 kafka topics sh 的相关操作 常用命令行操作 参数 描述 bootstrap s
  • Linux 下搭建 Kafka 环境

    安装步骤 准备软件目录 mkdir datalake 上传之前下载好的安装包到 datalake 目录下 jdk 8u181 linux x64 gz kafka 2 11 2 1 0 tgz zookeeper 3 4 5 tar gz
  • kafka学习笔记(一)简介

    这是对我找到的学习资料的整理 非手打 参考 https kafka apachecn org intro html https blog csdn net weixin 39468305 article details 106346280
  • Kafka 顺序消费方案

    Kafka 顺序消费方案 前言 1 问题引入 2 解决思路 3 实现方案 前言 本文针对解决Kafka不同Topic之间存在一定的数据关联时的顺序消费问题 如存在Topic insert和Topic update分别是对数据的插入和更新 当
  • Kafka——集群

    文章目录 集群 1 搭建个集群 2 集群发送消息 3 集群消费 3 1 Procuder 3 2 Consumer 4 消费顺序 集群 对于kafka来说 一个单独的broker意味着kafka集群中只有一个节点 要想增加kafka集群中的
  • kafka + zookeeper下载/安装/使用(超详细)

    kafka是需要zk来支持 所以先下载zk 1 下载安装zookeeper 下载地址 选择不带source的 下载下来解压2次 进入到 D zookeeper apache zookeeper 3 6 1 bin conf 目录下 把zoo
  • kafka问题解决:org.apache.kafka.common.errors.TimeoutException

    记录使用kafka遇到的问题 1 Caused by java nio channels UnresolvedAddressException null 2 org apache kafka common errors TimeoutExc
  • Kafka 架构及原理分析

    Kafka 架构及原理分析 文章目录 Kafka 架构及原理分析 简介 使用场景 架构 Broker Topic 副本机制 存储 消费分组 消费编号 数据多写支持 基于 binlog 实现主从复制 Kafka 的进阶功能 消息幂等性 事务
  • Kafka性能保证和延时队列实现原理

    数据不丢不漏 不重不错 一 不丢 生产写入消息不丢失 数据组织形式 首先 从数据组织形式来说 kafka有三层形式 kafka有多个主题 topic 每个主题有多个分区 分区分为主分区和副本分区 每个分区又有多条消息 而每个分区可以分布到不
  • Kafka——Mac搭建kafka环境

    1 下载Kafka安装包 下载地址 将压缩包移动到 usr local mv kafka 2 12 3 1 0 tgz usr local 解压 tar zxvf kafka 2 12 3 1 0 tgz 2 启动 启动zookeeper
  • Kafka 权威指南

    Kafka 权威指南 这本书于 2021 年看完 2022 年又看了一遍 感觉书读百遍 其义自现 这本书侧重于 Kafka 的理论知识 虽然书有点老 但是其中关于 Kafka 的基础知识的章节讲得确实不错 适合学习 Kafka 的新手以及
  • kafka的新API 得到最新一条数据

    业务的需要 需要得到最新的一条消息从kafka中 但是发现ConsumerRecords 这个对象并没有 get index 这种方式的获取并且只能 iterator 或者增强for 循环这种方式来循环 记录 但是有一个count 可以得到
  • MQ - KAFKA 高级篇

    kafak是一个分布式流处理平台 提供消息持久化 基于发布 订阅的方式的消息中间件 同时通过消费端配置相同的groupId支持点对点通信 适用场景 构造实时流数据管道 用于系统或应用之间可靠的消息传输 数据采集及处理 例如连接到一个数据库系
  • 从 MySQL 到 DolphinDB,Debezium + Kafka 数据同步实战

    Debezium 是一个开源的分布式平台 用于实时捕获和发布数据库更改事件 它可以将关系型数据库 如 MySQL PostgreSQL Oracle 等 的变更事件转化为可观察的流数据 以供其他应用程序实时消费和处理 本文中我们将采用 De
  • 【flink番外篇】9、Flink Table API 支持的操作示例(1)-完整版

    Flink 系列文章 一 Flink 专栏 Flink 专栏 系统介绍某一知识点 并辅以具体的示例进行说明 1 Flink 部署系列 本部分介绍Flink的部署 配置相关基础内容 2 Flink基础系列 本部分介绍Flink 的基础部分 比

随机推荐

  • C++中的RTTI

    文章目录 dynamic cast运算符 指针类型的dynamic cast 引用类型的dynamic cast typeid运算符 使用RTTI type info类 参考资料 RTTI Runtime Type Information
  • 计算机专业2021考研分数线,2021研究生国家分数线是多少

    2021年考研国家线公布 再看看外语国家线最高的是文学类a类地区53 b类地区50分 每年虽然英语线不高 但是很多学生还是折在英语上 可惜啊 2021考研国家线 国家线公布干什么 一 做出选择 考研本身就是一个选拔性的考试 有人考上 自然也
  • 《时代》评出100位AI领域最具影响力人物,黄仁勋、马斯克、萨姆·奥特曼在列...

    编辑 腾讯科技 郝博阳 郭晓静 翻译 金鹿 在过去的一个世纪里 时代 杂志的封面反映了塑造社会的力量 今年也是如此 生成式人工智能 Generative AI 无疑是今年最受关注的重塑社会的力量 我现在看到的创新水平比我一生中见过的要强几个
  • gRPC的C++编译及简单使用

    grpc的编译及简单使用 1 grpc相关参考文档 grpc 主页 https grpc io grpc 文档 https grpc io docs grpc 简介 https grpc io docs what is grpc intro
  • loadrunner入门教程(1)--概述

    文章目录 1 loadrunner介绍 2 特性 2 1 轻松创建虚拟用户 2 2 创建真实的负载 2 3 定位性能问题 3 工作原理 3 1 VuGen发生器 3 2 控制器 Controller 3 3 分析器 Analysis 4 工
  • 大数据开发:Hive DDL操作入门

    Hive针对于数据管理操作 提供了类SQL语言HQL 在Hadoop生态当中 Hive定位为数据仓库工具 对于数据的各种操作 也就是使用HQL来完成 而HQL查询 可以分为DDL和DML两个部分来掌握 今天的大数据开发学习分享 我们就先来讲
  • 【Java8】Guava——Preconditions

    Preconditions Precondition 是先决条件的意思 也叫前置条件 可以人为是使函数正常执行的参数需要满足的条件 Preconditions 这个静态工厂中 Guava 为我们提供了一系列的静态方法 用于帮助我们在函数执行
  • 50+ 可以帮助提高前端开发效率的 ChatGPT Prompts

    大厂技术 高级前端 Node进阶 点击上方 程序员成长指北 关注公众号 回复1 加入高级Node交流群 如果你已经厌倦了繁琐重复的编码日常 想要提升自己的效率 那你可是来对地方了 借助 ChatGPT 的强大能力 你可以简化你的工作流程 减
  • 数据结构与算法-列表(双向链表)设计及其排序算法

    0 概述 本文主要涵盖列表 双向链表 的设计及其排序算法的总结 列表是一种典型的动态存储结构 其中的数据 分散为一系列称作节点 node 的单位 节点之间通过指针相互索引和访问 为了引入新节点或删除原有节点 只需在局部调整少量相关节点之间的
  • VUE项目获取url中的参数

    获取url参数有两种情况 情况一 内部页面之间互相传值 这里先讲情况一 因为同一项目内互相传值比较简单 假如要从A页面跳转到B页面 并传值 就要在A页面这么写 this router push name B query Id this tI
  • webpack5配置解析

    webpack 配置文件 webpack config js entry output loader plugins mode webpack 命令即可打包 entry entry 入口起点 1 string gt src index js
  • 智能家居地址

    http blog yeelink net p 509
  • 神经网络在分类问题中的应用(反向传播算法)

    目录 1 W初始值的设定 2 反向传播算法 反向传播的实例 在其他的一些算法中对于分类问题易出现项数过多 过度拟合的情况 所以这里用一个新的方法来神经网络来解决问题 神经网络可以很好的适用特征空间n很大的情况 用图像来做一些名词解释 在图像
  • 《剑指offer》系列---2

    1 求斐波那契数列的第N项 这个题目很简单 讲递归的书上都是用这个来讲的 但是面试的时候 如果你写个递归 那估计会让人失望的 因为递归的效率真是一个问题 你可以测试一下 输入50 基本上得到结果的时间 够你去喝杯茶了 include
  • 端口开放,ubuntu开放指定端口 包括TCP UDP

    netstat nupl UDP类型的端口 netstat ntpl TCP类型的端口 a 表示所有 n 表示不查询dns t 表示tcp协议 u 表示udp协议 p 表示查询占用的程序 l 表示查询正在监听的程序 在ubuntu下面开放端
  • Echarts出现图表被压缩到很窄的情况的解决方法

    图表被压缩到很窄 可能是因为JSs执行太快 CSS来不及渲染 导致canvas只有默认的宽度 可以使用setTimeout 延迟加载JS
  • SpringSecurity+vue实现前后端分离实现登录注册退出

    前提 需要有springSecurity mybatis plus vue redis等知识 对springSecurity执行流程有点了解 需要代码可评论获取 首先先创建vue项目 创建好之后 下载axios element ui 将其目
  • Sqlilabs Less-26

    判断是单引号字符注入 id 1 当接下来进行操作时会发现很多被注释掉了 查看源码黑名单过滤了很多 or and 空格等等 function blacklist id id preg replace or i id strip out OR
  • 【无标题】记录一次external在vue项目的配置

    module exports publicPath chainWebpack config gt if process env NODE ENV production config plugin webpack bundle analyze
  • 在windows系统下使用IDEA对kafka源码进行编译环境搭建以及配置

    目录 一 前期准备工作 step1 安装JDK1 8 step2 安装zookeeper单机版 step3 安装Gradle 5 4 step4 安装scala 2 11 12 二 将kafka源代码部署到编辑器IDEA并测试 step1