kakfa源码调试 -- v2.5
一,环境准备
- 下载最新源码https://www.apache.org/dyn/closer.cgi?path=/kafka/2.5.0/kafka-2.5.0-src.tgz
- 下载gradle, https://gradle.org/releases/
- 进入源码的根路径,使用gradle编译 输入命令:
- gradle idea 等待一段时间就可以看到编译成功
- gradle wrapper
- gitbash
- export http_proxy=http://127.0.0.1:1081 设置代理
- ./gradlew jar
- 编译通过
- 导入idea打开
- 把client generated/generated-test拷贝到对于client包下,移除src <== TODO 不专业
二,kafka服务器启动
-
windows环境测试需要下载编译好的kafka_2.11-2.4.1.tgz
- 通过:bin/zookeeper-server-start.sh config/zookeeper.properties启动zookeeper
-
kafka服务启动
- 主类:kafka.Kafka
- 程序参数: config/server.properties
-
通过windows的bat命令测试
-
kafka-topics.bat --create --zookeeper localhost:2181 --replication-factor 1 --partitions 2 --topic test
-
查看zookeeper信息:bin/zookeeper-shell.sh localhost:2181
-
kafka-console-producer.bat --broker-list localhost:9092 --topic test
-
kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic test
- 消费内部topic __consumer_offsets :
- kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic __consumer_offsets --formatter "kafka.coordinator.group.GroupMetadataManager$OffsetsMessageFormatter" --consumer.config consumer_config.properties --from-beginning
- consumer.properties 添加exclude.internal.topics=false
- 消费内部topic __consumer_offsets :
-
kafka-topics.bat --list --zookeeper localhost:2181
-
消费情况: kafka-consumer-groups.bat --new-consumer --bootstrap-server localhost:9092 --describe
-
出错问题
- Error:(19, 39) java: 程序包org.apache.kafka.common.message不存在.
- 新版kafka将request和response的格式类改成自动生成了。你可以运行在Kafka源码目录下运行./gradlew重新生成一遍,然后再导入到IDEA
- windows -- git bash ./ gradlew
- 代理设置:export http_proxy=http://127.0.0.1:1081
- 通过网站https://www.ipaddress.com/查找raw.githubusercontent.com的ip地址
- 修改hosts 199.232.68.133 raw.githubusercontent.com
- c:\windows\system32\drivers\etc
- windows -- git bash ./ gradlew
- 新版kafka将request和response的格式类改成自动生成了。你可以运行在Kafka源码目录下运行./gradlew重新生成一遍,然后再导入到IDEA
- 执行.gradlew 报错 找不到 org.gradle.wrapper.GradleWrapperMain
- 在根目录执行gradle wrapper
- https://juejin.im/post/5c9395bcf265da612c3a3def
- kafka程序启动,SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
- core.iml修改slf4j的scope,直接删除
- log4j:WARN No appenders could be found for logger (kafka.utils.Log4jControllerRegistration$).
- 从config中拷贝log4j.properties 到 ,core/src/scala中