您当前的位置: 首页 >  顧棟 windows

在Windows环境IDEA下Kafka源码编译

顧棟 发布时间:2021-06-10 17:06:41 ,浏览量:3

文章目录

  • Kafka 1.1版本在Windows环境IDEA下的源码编译
    • 一、确认所需软件版本
    • 二、安装软件
      • 1. 安装JDK 1.8
      • 2. 安装Gradle 4.8
      • 3. 安装Scala 2.11.12
      • 4. 安装Zookeeper单机模式 3.4.9
      • 5. IDEA安装Scala插件
    • 三、源码编译
      • 1. 配置IDEA
      • 2. 编译
    • 四、单机模式启动
      • 1. 启动ZK
      • 2. 启动kafka
      • 3. 验证是否可以成功服务
    • 五、问题
      • 问题一
      • 问题二
    • 专栏导航

Kafka 1.1版本在Windows环境IDEA下的源码编译

本文帮助大家 在Windows环境下 进行Kafka源码的编译和单机模式的运行,方便运行调试,源码阅读和功能学习。

一、确认所需软件版本

  1. 可以通过查询Kafka文档,确定java version。
  2. 官方仓库地址,进入仓库选择对应的分支,打开文件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文件,文件增加配置,其中dataDirdataLogDir可以自行调整。

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

  1. 配置JDK

  2. 指定Gradle版本
    图中gradle user homeUser gradle from 按照自己目录修改。

  3. 指定scala

2. 编译


此时编译成功,如果只需要阅读代码,到此时,以及可以正常的使用IDEA看代码了。

四、单机模式启动

1. 启动ZK

直接运行zk解压后的bin文件夹下的zkServer.cmd

2. 启动kafka

  1. 修改kafka配置文件config/server.propertie除了以下修改,其他采用默认。

    listeners=PLAINTEXT://127.0.0.1:9092
    advertised.listeners=PLAINTEXT://127.0.0.1:9092
    zookeeper.connect=localhost:2181/kafka
    
  2. 配置启动application
    在program argument中填写config/server.properties

  3. 启动出现 问题一,见文章目录导航

  4. 启动出现 问题二,见文章目录导航

  5. 最后启动成功

3. 验证是否可以成功服务

  1. 创建topic

    --zookeeper localhost:2181/kafka --create --topic test20210610001 --replication-factor 1 --partitions 1
    



    此时创建了一个名为test20210610001的topic且分区数1 副本数1。

  2. 消费

    --bootstrap-server 127.0.0.1:9092 --topic test20210610001
    


    此时开启了一个消费端,消费test20100610001这个topic。

  3. 生产

    --broker-list 127.0.0.1:9092 --topic test20210610001
    



    此时创建了一个生产者,将消息写入test20210610001这个topic。

  4. 结果

    查看消费者客户端,发现可以正常消费。

五、问题

问题一

> 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拷贝进来即可。

专栏导航

Kafka专栏

关注
打赏
查看更多评论

顧棟

暂无认证

  • 3浏览

    0关注

    185博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文
立即登录/注册

微信扫码登录