暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

牛逼!IDEA本地调试Kafka源码之旅

大数据从业者 2021-09-11
2005

概述

Apache基金会顶级开源项目众多、数不胜数,大多数开源项目都很优秀,代码质量也很高。阅读学习这些优秀项目源码、掌握他们的设计目的和编程技巧,能够帮助我们提升自己技术水平。实际业务项目开发中,完全可以借鉴源码中的内容。Apache Kafka属于当前主流中间件,源码涉及很多实用的底层技术栈:并发、网络、文件存储、多线程。本文主要以IDEA本地调试Kafka为切入点,开启研究剖析Kafka源码的专栏。

版本信息

Zookeeper
3.5.9
Kafka
2.7.1

ZookeeperMain方法

Zookeeper启动脚本,源码路径:zookeeper\bin\zkServer.sh

        nohup "$JAVA" $ZOO_DATADIR_AUTOCREATE"-Dzookeeper.log.dir=${ZOO_LOG_DIR}" \
    "-Dzookeeper.log.file=${ZOO_LOG_FILE}""-Dzookeeper.root.logger=${ZOO_LOG4J_PROP}" \
    -XX:+HeapDumpOnOutOfMemoryError-XX:OnOutOfMemoryError='kill -9 %p' \
    -cp "$CLASSPATH" $JVMFLAGS$ZOOMAIN "$ZOOCFG" > "$_ZOO_DAEMON_OUT" 2>&1 < dev/null &
      ZOOMAIN="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.local.only=$JMXLOCALONLY org.apache.zookeeper.server.quorum.QuorumPeerMain"JMXLOCALONLY org.apache.zookeeper.server.quorum.QuorumPeerMain"

      即,主类为:org.apache.zookeeper.server.quorum.QuorumPeerMain

      Zookeeper配置&启动

      配置Main class:

        org.apache.zookeeper.server.quorum.QuorumPeerMain

        配置VM options:

          -Dlog4j.configuration=file:D:\ideaProject\zookeeper\conf\log4j.properties

          配置Program arguments:

            D:\ideaProject\zookeeper\conf\zoo_sample.cfg

            配置结果如图:

            启动结果如图:

            KafkaServer Main方法

            Server启动脚本,源码路径见:kafka\bin\kafka-server-start.sh

              exec $base_dir/kafka-run-class.sh $EXTRA_ARGS kafka.Kafka "$@"

              即,主类为:kafka.Kafka

               

              KafkaServer配置&启动

              配置结果如图:

              启动结果如图:

              Kafka TopicCommand Main方法

              TopicCommand源码路径:kafka\bin\kafka-topics.sh

                exec $(dirname $0)/kafka-run-class.sh kafka.admin.TopicCommand "$@"

                即,主类为:kafka.admin.TopicCommand

                配置结果如图:

                Kafka ConsoleProducer Main方法

                ConsoleProducer源码路径:kafka\bin\kafka-console-producer.sh

                  exec $(dirname $0)/kafka-run-class.sh kafka.tools.ConsoleProducer "$@"

                  即主类为:kafka.tools.ConsoleProducer

                  配置结果如图:

                  执行结果如图:

                  Kafka ConsoleConsumer Main方法

                  ConsoleConsumer源码路径:kafka\bin\kafka-console-consumer.sh

                    exec $(dirname $0)/kafka-run-class.sh kafka.tools.ConsoleConsumer "$@"

                    即主类为:kafka.tools.ConsoleConsumer

                    配置结果如图:

                    执行结果如图:

                    至此,IDAE调试Kafka源码演示完成,当然也可以调试其他类,如GetOffsetShell等等!!

                    文章转载自大数据从业者,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                    评论