2016-09-05 4 views
0

私は、次の依存関係を使用します。NoSuchMethodError:KafkaConsumer.subscribe

val akkaVersion = "2.4.9" 
val kafkaVersion = "0.10.0.1" 

dependencies = ... 
    "com.typesafe.akka" %% "akka-actor" % akkaVersion, 
    "com.typesafe.akka" %% "akka-cluster" % akkaVersion, 
    "com.softwaremill.reactivekafka" %% "reactive-kafka-core" % "0.10.0" 
     excludeAll(
      ExclusionRule("org.slf4j", "log4j-over-slf4j"), 
      ExclusionRule("org.apache.kafka", "kafka_2.11")), 
    "org.apache.kafka" % "kafka_2.11" % kafkaVersion, 
    "org.apache.kafka" % "kafka-clients" % kafkaVersion, 
    "org.apache.kafka" % "connect-json" % kafkaVersion 

を、俳優があります:

class ExpKafkaActor extends Actor { 

    override def preStart(): Unit = { 
    super.preStart() 
    val kafka = new ReactiveKafka() 

    val publisher = kafka.consume(ConsumerProperties(
     bootstrapServers = "localhost:9092", 
     topic = "someTopicName", 
     groupId = "groupName", 
     valueDeserializer = new StringDeserializer() 
    )) 

    Source.fromPublisher(publisher).map(m => { 
     val message = ProducerMessage(m.value().toUpperCase) 
     log.info(s"handle message ${m.value()}") 
     message 
    }) 
    } 
    ... 
} 

その後、私は上記の役者を起動しようとすると、次の例外が発生します

java.lang.NoSuchMethodError: 
org.apache.kafka.clients.consumer.KafkaConsumer.subscribe 

私は以下を見つけましたissueしかし、それは役に立ちません。 このAPIの問題を解決するにはどうすればよいですか?

+1

私はそれがAPIの競合だとは思っていませんが、kafka-client jarがありません。あなたの瓶をパッケージにsbtアセンブリを使用していますか? – lege

答えて

0

この問題は、KafkaクライアントAPIの非互換性によるものです。プロジェクトの一部として適切な依存関係を使用してください:

<dependency> 
    <groupId>org.apache.kafka</groupId> 
    <artifactId>kafka-clients</artifactId> 
    <version>{kafka.version}</version> 
</dependency> 

ex: for Kafka 0.10.2.0, use the following one 
<dependency> 
    <groupId>org.apache.kafka</groupId> 
    <artifactId>kafka-clients</artifactId> 
    <version>0.10.2.0</version> 
</dependency>