idea 导入 gradle_idea启动kafka2.0.1

cce891724406d4e97fd2165dc71188ba.png

点击上方“编程公举小柴柴”关注!

4eb7984b71ce6a8ba9705275902d2d99.png

一、准备工作

1、tools

java: 1.8.0_171,java -version

scala: 2.11.12, scala -version,需要和kafka/gradle.properties中版本一致。

gradle: 5.4,gradle -v

maven: 3.6.1,mvn -v

2、下载kafka源码

git clone git@github.com:apache/kafka.git -b 2.0.1

github下载慢,使用gitee.com导入github项目,再使用gitee提供的链接下载

3、编译kafka

1) 添加aliyun maven仓库

在build.gradle文件中作如下修改:

在jcenter()的上面加上aliyun maven center:

maven{ url 'http://maven.aliyun.com/nexus/content/groups/public/'}

jcenter()

2) 修改依赖版本

在build.gradle文件中修改

classpath 'org.scoverage:gradle-scoverage:2.1.0' => classpath 'org.scoverage:gradle-scoverage:2.5.0'

3) gradle idea

二、使用idea运行kafka

1、安装正确的scala版本,保持本机scala version和gradle.properties中一致

首先确保gradle.properties配置文件中的scalaVersion与安装的一致。gradle.properties配置文件的细节如下:

group=org.apache.kafka

# NOTE: When you change this version number, you should also make sure to update

# the version numbers in tests/kafkatest/__init__.py and kafka-merge-pr.py.

version=1.0.0

scalaVersion=2.11.11

task=build

org.gradle.jvmargs=-XX:MaxPermSize=512m -Xmx1024m -Xss2m

如果更改了scalaVersion,需要重新执行gradle idea命令来重新构建。虽然很多时候在操作系统中安装其他版本的Scala也并没有什么问题,比如安装2.12.4版本。但是有些情况下运行Kafka时会出现一些异常,而这些异常却又是由于Scala版本不一致而引起的,比如会出现下面示例中的报错:

[2017-11-13 17:09:21,119] FATAL (kafka.Kafka$)

java.lang.NoSuchMethodError: scala.collection.TraversableOnce.$init$(Lscala/collection/TraversableOnce;)V

    at kafka.message.MessageSet.(MessageSet.scala:72)

    at kafka.message.ByteBufferMessageSet.(ByteBufferMessageSet.scala:129)

    at kafka.message.MessageSet$.(MessageSet.scala:32)

    at kafka.message.MessageSet$.(MessageSet.scala)

    at kafka.server.Defaults$.(KafkaConfig.scala:52)

    at kafka.server.Defaults$.(KafkaConfig.scala)

    at kafka.server.KafkaConfig$.(KafkaConfig.scala:686)

    at kafka.server.KafkaConfig$.(KafkaConfig.scala)

    at kafka.server.KafkaServerStartable$.fromProps(KafkaServerStartable.scala:28)

    at kafka.Kafka$.main(Kafka.scala:82)

    at kafka.Kafka.main(Kafka.scala)

所以为了省去一些不必要的麻烦,还是建议读者在安装Scala版本之前先查看下Kafka源码中gradle.properties文件中配置的scalaVersion。

2、创建log4j.properties

再确保了scalaVersion之后,创建kafka/core/src/main/resources目录,添加为resource,将config目录下的log4j.properties文件拷贝到kafka/core/src/main/resources目录下,这样可以让Kafka在运行时能够输出日志信息,可以参考下图:

b569a6798bd04b2d801b276affbbdc4c.png

3、创建kafka/tmp/server.properties文件

之后还需要配置kafka/tmp/server.properties文件,一般只需要修改以下一些配置项:

# 是否允许topic被删除,设置为true则topic可以被删除,

# 开启这个功能方便Kafka在运行一段时间之后,能够删除一些不需要的临时topic

delete.topic.enable=true

# 禁用自动创建topic的功能

auto.create.topics.enable=false

# 存储log文件的目录,默认值为/tmp/kafka-logs

log.dir=/tmp/kafka/kafka-logs

# 配置kafka依赖的zookeeper路径地址,这里的前提是在本地开启了一个zookeeper的服务

# 如果本地没有zookeeper服务,可以参考下一节中zookeeper的安装、配置及运行

zookeeper.connect=localhost:2181/kafka

4、core_main添加slf4j-log4j12包,结果如下图:

6a0d4d0f0f1adf3533a6248ea0d21e55.png

5、配置kafka启动参数

之后配置Kafka的启动参数,详细参考下图:

a1e2f589cb6060b887297591861608f6.png

这里配置Main class为kafka.Kafka,并制定启动时所需要的配置文件地址,即:kafka/tmp/server.properties。配置JMX_PORT是为了方便搜集Kafka自身的Metrics数据。

如此便可以顺利的运行Kafka服务了(第一次启动时会有一个耗时较长的编译过程)

喜欢可以点分享、赞、在看!

43acae9548fd573cf2370563355fc2df.gif
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值