如何在ide中设置kafka源代码进行调试

x33g5p2x  于 2021-06-07  发布在  Kafka
关注(0)|答案(2)|浏览(382)

我想在eclipse中设置Kafka。我遵循文档,安装了所需的插件并导入了项目。我正在尝试设置环境,以便能够从eclipse运行kafka服务器并逐行调试它。我的最终目标是为Kafka做贡献。为了理解代码体系结构,我觉得需要能够逐行调试代码,并查看在后台发生的事情。我试着阅读kafka的开始脚本,其中设置了一些参数来实际调用相应的类。例如,在kafka-server-start.sh中,它设置了(设置的参数比我提到的要多) KAFKA_HEAP_OPTS = some value KAFKA_LOG4J_OPTS = some value EXTRA_ARGS="-name kafkaServer -loggc" 在那之后它在召唤

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

现在我进入了这个脚本,有for循环,它向类路径添加了一些值,例如(有多个for循环)

for cc_pkg in "api" "runtime" "file" "json" "tools"
do
  for file in $base_dir/connect/${cc_pkg}/build/libs/connect-${cc_pkg}*.jar;
  do
    CLASSPATH=$CLASSPATH:$file
  done
  if [ -d "$base_dir/connect/${cc_pkg}/build/dependant-libs" ] ; then
    CLASSPATH=$CLASSPATH:$base_dir/connect/${cc_pkg}/build/dependant-libs/*
  fi
done

最后,它是如何实际启动Kafka服务器的


# Launch mode

if [ "x$DAEMON_MODE" = "xtrue" ]; then
  nohup $JAVA $KAFKA_HEAP_OPTS $KAFKA_JVM_PERFORMANCE_OPTS $KAFKA_GC_LOG_OPTS $KAFKA_JMX_OPTS $KAFKA_LOG4J_OPTS -cp $CLASSPATH $KAFKA_OPTS "$@" > "$CONSOLE_OUTPUT_FILE" 2>&1 < /dev/null &
else
  exec $JAVA $KAFKA_HEAP_OPTS $KAFKA_JVM_PERFORMANCE_OPTS $KAFKA_GC_LOG_OPTS $KAFKA_JMX_OPTS $KAFKA_LOG4J_OPTS -cp $CLASSPATH $KAFKA_OPTS "$@"
fi

不知道如何在eclipse运行时告诉它所有这些。让我知道我是否应该把整个脚本文件放在这里。即使我能想出办法,我也可以试试。我想我可以在arguments窗口中传递这个参数,在debug配置中也有classpath选项卡,但是我应该在这个窗口中添加脚本中的所有路径吗?

pxyaymoc

pxyaymoc1#

只需在参数中传递server.properties文件。您可以从run configuration窗口传递这个消息,然后单击apply和run/debug。这会让你走的。您不必遍历所有参数并传递它们。如果你想传递这些参数,那么你必须得到参数,就像马西亚斯解释的那样。但这些参数并不是运行Kafka所必需的。
但简单的解决方法是右键单击要运行哪个项目的主类。例如,如果我想运行kafka服务器,我将进入kafka主项目的核心项目

kafka-> core -> src.main.scala.kafka - > kafka.scala

右键单击该窗口,选择debug as,然后单击debug configurations:在该窗口中传递server.properties文件的路径,然后单击apply。您可以在tar中找到server.properties文件,在tar中找到开始脚本。

xzabzqsa

xzabzqsa2#

首先,将Kafka的剧本修改为 echo 实际命令:

echo $KAFKA_HEAP_OPTS $KAFKA_JVM_PERFORMANCE_OPTS $KAFKA_GC_LOG_OPTS $KAFKA_JMX_OPTS $KAFKA_LOG4J_OPTS -cp $CLASSPATH $KAFKA_OPTS "$@"

之后,您需要在eclipse中编辑运行配置:
这些东西来自 $KAFKA_HEAP_OPTS $KAFKA_JVM_PERFORMANCE_OPTS $KAFKA_GC_LOG_OPTS $KAFKA_JMX_OPTS $KAFKA_LOG4J_OPTS 并进入jvm arguments字段(在面板“arguments”中)。
这个 CLASSPATH 通过面板“classpath”配置 $@ 应该包含包含 main 这就是所谓的(也许你可以在面板“参数”中设置程序参数)

相关问题