Apache kafka 在windows中启动合流架构注册表
我有windows环境和我自己的卡夫卡和zookeeper。为了使用自定义对象,我开始使用Avro。但我需要开始注册。下载Confluent platform并运行以下操作:Apache kafka 在windows中启动合流架构注册表,apache-kafka,avro,kafka-producer-api,confluence-rest-api,confluent-platform,Apache Kafka,Avro,Kafka Producer Api,Confluence Rest Api,Confluent Platform,我有windows环境和我自己的卡夫卡和zookeeper。为了使用自定义对象,我开始使用Avro。但我需要开始注册。下载Confluent platform并运行以下操作: $ ./bin/schema-registry-start ./etc/schema-registry/schema-registry.properties /c/Confluent/confluent-3.0.0-2.11/confluent-3.0.0/bin/schema-registry-run-class: li
$ ./bin/schema-registry-start ./etc/schema-registry/schema-registry.properties
/c/Confluent/confluent-3.0.0-2.11/confluent-3.0.0/bin/schema-registry-run-class: line 103: C:\Program: No such file or directory
然后我在安装页面上看到:
Confluent当前不支持Windows。Windows用户可以下载并使用zip和tar存档,但必须直接运行jar文件,而不是使用bin/目录中的包装脚本
我想知道如何在Windows环境中启动confluent schema registry
查看脚本的内容,很难破译
感谢您,Confluent Platform目前没有任何Windows脚本。但是,如果您对运行Java应用程序感到满意,您可以编写自己的应用程序。
schema注册表服务器启动
脚本(以及它所依赖的schema注册表运行类
脚本)执行诸如handle-daemon
模式、设置Java内存选项、设置默认日志配置等操作,但归根结底,关键在于它们以io.confluent.kafka.schemaregistry.rest.SchemaRegistryMain
为主要方法执行Java。您可能还会发现kafka的kafka run class.bat
是一个有用的基础:问题可能是Windows环境的JAVA_主环境设置中存在空格(错误消息为“C:\Program”而不是“C:\Program Files…”
您可以通过将schema registry运行类脚本中的最后一个“exec”替换为“echo”来确定启动schema_注册表的最终java调用的确切语法
/Library/Java/JavaVirtualMachines/jdk1.8.0_91.jdk/Contents/Home/bin/java -Xmx512M -server -XX:+UseG1GC -XX:MaxGCPauseMillis=20 -XX:InitiatingHeapOccupancyPercent=35 -XX:+DisableExplicitGC -Djava.awt.headless=true -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Dlog4j.configuration=file:/opt/confluent/bin/../etc/schema-registry/log4j.properties -cp :/opt/confluent/bin/../package-schema-registry/target/kafka-schema-registry-package-*-development/share/java/schema-registry/*:/opt/confluent/bin/../share/java/confluent-common/*:/opt/confluent/bin/../share/java/rest-utils/*:/opt/confluent/bin/../share/java/schema-registry/* io.confluent.kafka.schemaregistry.rest.SchemaRegistryMain
该命令归结为“java[core java opts][java defines]-cp[classpath]io.confluent.kafka.schemaregistry.rest.SchemaRegistryMain”
如果您将“/opt/confluent”引用替换为confluent安装的实际位置,我想您的运气会好得多
注意:我更喜欢在windows上将Java安装到客户位置(例如“C:\java8”),因为许多标准脚本在C:\Program Files部署位置上会有问题。我已经成功地使用cygwin从cmd.exe运行了合流工具
C:\>c:\cygwin64\bin\bash -l /cygdrive/c/confluent/4.0.0/bin/kafka-avro-console-consumer --bootstrap-server <my_server_name>:9092 --topic <my_topic> --property schema.registry.url=http://<my_schema_registry_url>:8081 >> tmp.txt
C:\>C:\cygwin64\bin\bash-l/cygdrive/C/confluent/4.0.0/bin/kafka-avro-console-consumer--bootstrap server:9092--topic--property schema.registry.url=http://:8081>>tmp.txt
有人按照Ewen Cheva的建议创建了Windows.bat文件
我将schema registry run class.bat
和schema registry start.bat
保存到我的\confluent\bin\windows
目录中,然后可以使用
C:\confluent\bin\windows\schema-registry-start.bat C:\confluent\etc\
schema registry\schema registry.properties
模式注册表运行类bat文件的代码为:
另存为schema-registry-run-class.bat
@echo off
setlocal EnableExtensions EnableDelayedExpansion
pushd %~dp0..\..
set BASE_DIR=%CD%
popd
for %%i in (%BASE_DIR%/package-schema-registry/target/kafka-schema-registry-package-*-development) do (
call :concat %%i/share/java/schema-registry/*
)
for %%i in (confluent-common, rest-utils, schema-registry) do (
call :concat %BASE_DIR%/share/java/%%i/*
)
rem Log4j settings
IF ["%SCHEMA_REGISTRY_LOG4J_OPTS%"] EQU [""] (
if exist %~dp0../../etc/schema-registry/log4j.properties (
set SCHEMA_REGISTRY_LOG4J_OPTS=-Dlog4j.configuration=file:%~dp0../../etc/schema-registry/log4j.properties
) else (
set SCHEMA_REGISTRY_LOG4J_OPTS=-Dlog4j.configuration=file:%BASE_DIR%/config/log4j.properties
)
)
rem JMX settings
IF ["%SCHEMA_REGISTRY_JMX_OPTS%"] EQU [""] (
set SCHEMA_REGISTRY_JMX_OPTS=-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false
)
rem JMX port to use
IF ["%JMX_PORT%"] NEQ [""] (
set SCHEMA_REGISTRY_JMX_OPTS=%SCHEMA_REGISTRY_JMX_OPTS% -Dcom.sun.management.jmxremote.port=%JMX_PORT%
)
rem Which java to use
IF ["%JAVA_HOME%"] EQU [""] (
set JAVA=java
) ELSE (
set JAVA="%JAVA_HOME%/bin/java"
)
rem Memory options
IF ["%SCHEMA_REGISTRY_HEAP_OPTS%"] EQU [""] (
set SCHEMA_REGISTRY_HEAP_OPTS=-Xmx512M
)
rem JVM performance options
IF ["%SCHEMA_REGISTRY_JVM_PERFORMANCE_OPTS%"] EQU [""] (
set SCHEMA_REGISTRY_JVM_PERFORMANCE_OPTS=-server -XX:+UseG1GC -XX:MaxGCPauseMillis=20 -XX:InitiatingHeapOccupancyPercent=35 -XX:+DisableExplicitGC -Djava.awt.headless=true
)
set COMMAND=%JAVA% %SCHEMA_REGISTRY_HEAP_OPTS% %SCHEMA_REGISTRY_JVM_PERFORMANCE_OPTS% %SCHEMA_REGISTRY_JMX_OPTS% %SCHEMA_REGISTRY_LOG4J_OPTS% -cp %CLASSPATH% %SCHEMA_REGISTRY_OPTS% %*
%COMMAND%
goto :eof
:concat
IF ["%CLASSPATH%"] EQU [""] (
set CLASSPATH="%1"
) ELSE (
set CLASSPATH=%CLASSPATH%;"%1"
)
模式注册表bat文件的代码。 另存为schema-registry-start.bat
@echo off
%~dp0schema-registry-run-class.bat io.confluent.kafka.schemaregistry.rest.SchemaRegistryMain %*
架构注册表属性文件应如下所示:
另存为schema-registry.properties
listeners=http://10.91.31.169:8081
kafkastore.connection.url=10.91.31.169:2181
kafkastore.topic=_schemas
debug=true
感谢您提供有关Java8安装位置的提示!错误:无法找到或加载主类io.confluent.kafka.schemaregistry.rest.SchemaRegistryMain,原因是:java.lang.ClassNotFoundException:io.confluent.kafka.schemaregistry.rest.SchemaRegistryMain