Java 卡夫卡:无法创建嵌入式卡夫卡服务器
更新: 下面是我试图遵循的示例代码 它应该与kafka 0.10.x配合使用 我正在尝试创建一个嵌入式kafka服务器作为Java 卡夫卡:无法创建嵌入式卡夫卡服务器,java,apache-kafka,Java,Apache Kafka,更新: 下面是我试图遵循的示例代码 它应该与kafka 0.10.x配合使用 我正在尝试创建一个嵌入式kafka服务器作为 EmbeddedZookeeper zkServer = new EmbeddedZookeeper(); String zkConnect = ZKHOST + ":" + zkServer.port(); ZkClient zkClient = new ZkClient(zkConnect, 30000, 30000,
EmbeddedZookeeper zkServer = new EmbeddedZookeeper();
String zkConnect = ZKHOST + ":" + zkServer.port();
ZkClient zkClient = new ZkClient(zkConnect, 30000, 30000, ZKStringSerializer$.MODULE$);
ZkUtils zkUtils = ZkUtils.apply(zkClient, false);
// setup Broker
Properties brokerProps = new Properties();
brokerProps.setProperty("zookeeper.connect", zkConnect);
brokerProps.setProperty("broker.id", "0");
brokerProps.setProperty("log.dirs", Files.createTempDirectory("kafka-").toAbsolutePath().toString());
brokerProps.setProperty("listeners", "PLAINTEXT://:" + BROKERPORT);
brokerProps.setProperty("advertised.listeners", "PLAINTEXT://" + BROKERHOST +":" + BROKERPORT);
//brokerProps.setProperty("security.inter.broker.protocol","PLAINTEXT");
KafkaConfig config = new KafkaConfig(brokerProps);
Time mock = new MockTime();
KafkaServer kafkaServer = TestUtils.createServer(config, mock);
logger.info("TestKafkaServer created");
但我明白了
java.lang.NoSuchFieldError: DEFAULT_SASL_ENABLED_MECHANISMS
at kafka.server.Defaults$.<init>(KafkaConfig.scala:183)
at kafka.server.Defaults$.<clinit>(KafkaConfig.scala)
at kafka.log.Defaults$.<init>(LogConfig.scala:35)
at kafka.log.Defaults$.<clinit>(LogConfig.scala)
at kafka.log.LogConfig$.<init>(LogConfig.scala:246)
at kafka.log.LogConfig$.<clinit>(LogConfig.scala)
at kafka.server.KafkaConfig$.<init>(KafkaConfig.scala:270)
at kafka.server.KafkaConfig$.<clinit>(KafkaConfig.scala)
at kafka.server.KafkaConfig.<init>(KafkaConfig.scala:795)
at kafka.server.KafkaConfig.<init>(KafkaConfig.scala:797)
at com.ibm.whi.bap.helper.test.kafka.KafkaServerTest.<init>(KafkaServerTest.java:56)
at com.ibm.whi.bap.helper.test.kafka.KafkaTest.checkAllProperties(KafkaTest.java:115)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31)
at org.junit.rules.TestWatchman$1.evaluate(TestWatchman.java:48)
at org.junit.runners.BlockJUnit4ClassRunner.runNotIgnored(BlockJUnit4ClassRunner.java:79)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:71)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:49)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:86)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:675)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)
java.lang.NullPointerException
at com.ibm.whi.bap.helper.test.kafka.KafkaTest.tearDown(KafkaTest.java:58)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:37)
at org.junit.rules.TestWatchman$1.evaluate(TestWatchman.java:48)
at org.junit.runners.BlockJUnit4ClassRunner.runNotIgnored(BlockJUnit4ClassRunner.java:79)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:71)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:49)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:86)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:675)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)
我做错了什么?我试着和他一起玩
brokerProps.setProperty("security.inter.broker.protocol","PLAINTEXT");
但什么都没用。我只想为单元测试创建一个嵌入式kafka服务器。我根本不想设置任何安全措施
这是我的马文
<dependency>
<groupId>org.apache.kafka</groupId>
<artifactId>kafka-clients</artifactId>
<version>0.10.1.0</version>
<classifier>test</classifier>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.kafka</groupId>
<artifactId>kafka_2.11</artifactId>
<version>0.10.1.0</version>
<classifier>test</classifier>
<scope>test</scope>
</dependency>
org.apache.kafka
卡夫卡客户
0.10.1.0
测试
测试
org.apache.kafka
卡夫卡2.11
0.10.1.0
测试
测试
这不是代码问题。这是版本不匹配。您正在使用的库()是根据Kafka 0.10.0.0编译的,这与您正在使用的Kafka版本()不同。这就是为什么它无法找到字段DEFAULT\u SASL\u ENABLED\u mechanism。您可能需要查看以下链接:-
您可以将这些复制到java类到您的项目源代码中,或者您可以修改一些细节(例如删除模式注册表)。这将比依赖某些库(正如您当前所依赖的)更简单,只需创建内存中的kafka集群。毕竟这只是几行代码。希望这有帮助。这不是代码问题。这是版本不匹配。您正在使用的库()是根据Kafka 0.10.0.0编译的,这与您正在使用的Kafka版本()不同。这就是为什么它无法找到字段DEFAULT\u SASL\u ENABLED\u mechanism。您可能需要查看以下链接:-
您可以将这些复制到java类到您的项目源代码中,或者您可以修改一些细节(例如删除模式注册表)。这将比依赖某些库(正如您当前所依赖的)更简单,只需创建内存中的kafka集群。毕竟这只是几行代码。希望这能有所帮助。也许是因为卡夫卡不喜欢阿森纳球迷。JK。你可以试试HDP的沙箱,它本机部署了zookeeper和代理。唯一的问题是开放端口(因为它是一个码头工人)。哈哈,没问题!我也不是卡夫卡的粉丝:问题是我需要嵌入式zookeeper,因为我有一些单元测试。我不需要这些测试之外的卡夫卡服务器。我知道上面的代码曾经适用于卡夫卡0.8,我想可能是o.9,但现在它不适用于0.10。我猜ti与未设置的某些代理属性有关。有什么想法吗?哦,在0.8和0.10之间有很多变化。例如,消费者现在直接连接到经纪人。再次阅读您的代码,我认为您缺少Scala软件包,您是否尝试添加该依赖项?不,我没有,那是什么依赖项?请查看我发布的更新,因为卡夫卡不喜欢阿森纳球迷。JK。你可以试试HDP的沙箱,它本机部署了zookeeper和代理。唯一的问题是开放端口(因为它是一个码头工人)。哈哈,没问题!我也不是卡夫卡的粉丝:问题是我需要嵌入式zookeeper,因为我有一些单元测试。我不需要这些测试之外的卡夫卡服务器。我知道上面的代码曾经适用于卡夫卡0.8,我想可能是o.9,但现在它不适用于0.10。我猜ti与未设置的某些代理属性有关。有什么想法吗?哦,在0.8和0.10之间有很多变化。例如,消费者现在直接连接到经纪人。再次阅读您的代码,我认为您缺少Scala包,您是否尝试添加该依赖项?不,我没有,那是什么依赖项?请查看我发布的更新谢谢!我在kafka更新为0.10.1.0的情况下尝试了上述方法,但仍然得到
java.lang.NoSuchFieldError:DEFAULT\u SASL\u ENABLED\u MECHANISMS
ateffectiveConfig.put(kafkanconfig$.MODULE$.BrokerIdProp(),0)代码>使用或使用confluent解决方案?使用confluent得到的此错误。我试着使用嵌入的zookeeper启动很好我甚至没有添加任何属性,只是试着使用defautsthanks!我在kafka更新为0.10.1.0的情况下尝试了上述方法,但仍然得到java.lang.NoSuchFieldError:DEFAULT\u SASL\u ENABLED\u MECHANISMS
ateffectiveConfig.put(kafkanconfig$.MODULE$.BrokerIdProp(),0)代码>使用或使用confluent解决方案?使用confluent得到的此错误。我试着使用嵌入的zookeeper启动很好我甚至没有添加任何属性,只是试着使用defauts
<dependency>
<groupId>org.apache.kafka</groupId>
<artifactId>kafka-clients</artifactId>
<version>0.10.1.0</version>
<classifier>test</classifier>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.kafka</groupId>
<artifactId>kafka_2.11</artifactId>
<version>0.10.1.0</version>
<classifier>test</classifier>
<scope>test</scope>
</dependency>