kafka_2.11-0.9.0.1和scala 2.11.7的问题

时间:2016-11-10 00:38:20

标签: scala apache-kafka

在过去的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。

你能帮我解决一下我的问题吗? 我错过了什么吗?

1 个答案:

答案 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);
}