从 scala 启动 KsqlRestApplication 并得到 NoSuchMethodError org.apache.kafka.streams.StreamsConfig.getConsumerConfigs
Starting KsqlRestApplication form scala and getting NoSuchMethodError org.apache.kafka.streams.StreamsConfig.getConsumerConfigs
我正在尝试编写一个程序,使我能够 运行 在 Scala 中对 Kafka 主题进行预定义的 KSQL 操作,但我不想每次都打开 KSQL Cli。因此,我想从我的 Scala 程序中启动 KSQL "Server"。如果我正确理解 KSQL 源代码,我必须构建并启动一个 KsqlRestApplication:
def restServer = KsqlRestApplication.buildApplication(new
KsqlRestConfig(defaultServerProperties), true, new VersionCheckerAgent
{override def start(ksqlModuleType: KsqlModuleType, properties:
Properties): Unit = ???})
但是当我尝试这样做时,出现以下错误:
Exception in thread "main" java.lang.NoSuchMethodError: org.apache.kafka.streams.StreamsConfig.getConsumerConfigs(Ljava/lang/String;Ljava/lang/String;)Ljava/util/Map;
at io.confluent.ksql.rest.server.BrokerCompatibilityCheck.create(BrokerCompatibilityCheck.java:62)
at io.confluent.ksql.rest.server.KsqlRestApplication.buildApplication(KsqlRestApplication.java:241)
我查看了 BrokerCompatibilityCheck 中的函数调用,在创建函数中它调用了 StreamsConfig.getConsumerConfigs() 并使用 2 个字符串作为参数而不是
中定义的参数
是我的 KSQL 和 Kafka 版本不兼容还是我做错了什么?
我正在使用 KSQL 版本 4.1.0-SNAPSHOT 和 Kafka 版本 1.0.0.
是的,NoSuchMethodError 通常表示库之间的版本不兼容。
您发布的 link 是针对 kafka 0.10.2 的 javadoc。该方法在 1.0 中没有改变,但实际上在即将到来的 1.1 中它只需要 2 个字符串:
https://kafka.apache.org/11/javadoc/org/apache/kafka/streams/StreamsConfig.html#getConsumerConfigs(java.lang.String,%20java.lang.String)
.这表明您使用的 KSQL 版本 (4.1.0-SNAPSHOT) 取决于 kafka 流的 1.1 版,该版本目前处于候选发布阶段,我相信应该很快就会发布:
根据该电子邮件,您可以在 apache 暂存存储库中找到最新的 (1.1.0-rc2) 工件:
https://repository.apache.org/content/groups/staging/
我正在尝试编写一个程序,使我能够 运行 在 Scala 中对 Kafka 主题进行预定义的 KSQL 操作,但我不想每次都打开 KSQL Cli。因此,我想从我的 Scala 程序中启动 KSQL "Server"。如果我正确理解 KSQL 源代码,我必须构建并启动一个 KsqlRestApplication:
def restServer = KsqlRestApplication.buildApplication(new
KsqlRestConfig(defaultServerProperties), true, new VersionCheckerAgent
{override def start(ksqlModuleType: KsqlModuleType, properties:
Properties): Unit = ???})
但是当我尝试这样做时,出现以下错误:
Exception in thread "main" java.lang.NoSuchMethodError: org.apache.kafka.streams.StreamsConfig.getConsumerConfigs(Ljava/lang/String;Ljava/lang/String;)Ljava/util/Map;
at io.confluent.ksql.rest.server.BrokerCompatibilityCheck.create(BrokerCompatibilityCheck.java:62)
at io.confluent.ksql.rest.server.KsqlRestApplication.buildApplication(KsqlRestApplication.java:241)
我查看了 BrokerCompatibilityCheck 中的函数调用,在创建函数中它调用了 StreamsConfig.getConsumerConfigs() 并使用 2 个字符串作为参数而不是
中定义的参数是我的 KSQL 和 Kafka 版本不兼容还是我做错了什么? 我正在使用 KSQL 版本 4.1.0-SNAPSHOT 和 Kafka 版本 1.0.0.
是的,NoSuchMethodError 通常表示库之间的版本不兼容。
您发布的 link 是针对 kafka 0.10.2 的 javadoc。该方法在 1.0 中没有改变,但实际上在即将到来的 1.1 中它只需要 2 个字符串: https://kafka.apache.org/11/javadoc/org/apache/kafka/streams/StreamsConfig.html#getConsumerConfigs(java.lang.String,%20java.lang.String) .这表明您使用的 KSQL 版本 (4.1.0-SNAPSHOT) 取决于 kafka 流的 1.1 版,该版本目前处于候选发布阶段,我相信应该很快就会发布:
根据该电子邮件,您可以在 apache 暂存存储库中找到最新的 (1.1.0-rc2) 工件: https://repository.apache.org/content/groups/staging/