在过去的6个月里,我是我们在kafka-0.8.1.1之上编写解决方案的开发人员。它对我们来说很稳定。我们以为我们会升级到kafka-0.9.0.1。 随着服务器升级,我们没有遇到任何问题。
我们有自己的解决方案,用于提取消息并写入不同的目的地以及风暴读取的消息。对于我们的单元测试,我们使用以下maven工件
<groupId>org.apache.kafka</groupId>
<artifactId>kafka_2.9.2</artifactId>
<version>0.8.1.1</version>
我找不到kafka_2.9.2的0.9.0.1版本。因此我先转到kafka_2.11。这是使用的工件:
<groupId>org.apache.kafka</groupId>
<artifactId>kafka_2.11</artifactId>
<version>0.9.0.1</version>
我遇到了以下问题:
scala.ScalaObject not found issue
java.lang.NoSuchMethodError: scala.Predef$.ArrowAssoc(Ljava/lang/Object;)Ljava/lang/Object;
kafkaConfig<init> issue with NoSuchMethodError (Ljava/util/map;)Ljava/util/map
同时大多数情况下,我会遇到KafkaServerStartable(在kafka_2.10-0.9.0.1和kafka_2.11-0.9.0.1中)挂起问题。但是使用相同的单元测试,我从未遇到kafka服务器挂起问题kafka_2.9.2。
你能帮我解决一下我的问题吗? 我错过了什么吗?
答案 0 :(得分:0)
这不是答案。跟进我的问题: 这是现有代码用于启动测试服务器的kafka配置: 我试过的依赖:
<groupId>org.apache.kafka</groupId>
<artifactId>kafka_2.11</artifactId> # in this, scala 11.4, 11.7 used alternativel to verify
<version>0.9.0.1</version>
<groupId>org.apache.kafka</groupId>
<artifactId>kafka_2.10</artifactId> # in this scala 10.4 is used
<version>0.9.0.1</version>
public KafkaTestServer(int port,ZookeeperTestServer zkServer,String brokerId,int defaultPartitionCount)抛出Exception { this.zkServer = zkServer;
KafkaConfig config = getKafkaConfig(zkServer.getConnectString(), port, brokerId, defaultPartitionCount);
kafkaServer = new KafkaServerStartable(config);
kafkaServer.startup();
ProducerConfig conf = new ProducerConfig(getProducerConfig(getKafkaBrokerString()));
producer = new Producer<>(conf);
}
private KafkaConfig getKafkaConfig(String zkConnectString, int port, String brokerId, int defaultPartitionCount) {
Properties props = new Properties();
props.setProperty("zookeeper.connect", zkConnectString);
props.setProperty("broker.id", brokerId);
props.setProperty("port", Integer.toString(port));
createKafkaDataDirectory();
props.setProperty("log.dirs", dataDirectory.getAbsolutePath());
props.setProperty("num.partitions", Integer.toString(defaultPartitionCount));
props.setProperty("retry.backoff.ms", "500");
return new KafkaConfig(props, false);
}