2017-04-04 7 views
2

Apache KafkaとSpring Kafkaにはかなり新しく、トピックから情報を消費して何らかの操作を行うアプリケーションを作成しています。Apache kafkaの例外 - apikey:3とapiVersion:2のリクエストの取得中にエラーが発生しました。

@KafkaListenerアノテーションを使用して簡単なコンシューマを作成し、ローカルのKafka Server 0.10.1.1に対してテストしても問題なく動作しました。私はカフカの私たちのDEVのサーバー(バージョン - 0.10.0.2.5)を指していたときに

は今、私は、クライアント側のログに以下の例外を取得する参照してください。

network.Selector - Connection with qm-alpha.activehealth.net/10.42.53.152 disconnected 
java.io.EOFException: null 
    at org.apache.kafka.common.network.NetworkReceive.readFromReadableChannel(NetworkReceive.java:83) ~[kafka-clients-0.10.1.1.jar!/:?] 
    at org.apache.kafka.common.network.NetworkReceive.readFrom(NetworkReceive.java:71) ~[kafka-clients-0.10.1.1.jar!/:?] 
    at org.apache.kafka.common.network.KafkaChannel.receive(KafkaChannel.java:154) ~[kafka-clients-0.10.1.1.jar!/:?] 
    at org.apache.kafka.common.network.KafkaChannel.read(KafkaChannel.java:135) ~[kafka-clients-0.10.1.1.jar!/:?] 
    at org.apache.kafka.common.network.Selector.pollSelectionKeys(Selector.java:343) [kafka-clients-0.10.1.1.jar!/:?] 
    at org.apache.kafka.common.network.Selector.poll(Selector.java:291) [kafka-clients-0.10.1.1.jar!/:?] 
    at org.apache.kafka.clients.NetworkClient.poll(NetworkClient.java:260) [kafka-clients-0.10.1.1.jar!/:?] 
    at org.apache.kafka.clients.consumer.internals.ConsumerNetworkClient.poll(ConsumerNetworkClient.java:232) [kafka-clients-0.10.1.1.jar!/:?] 
    at org.apache.kafka.clients.consumer.internals.ConsumerNetworkClient.poll(ConsumerNetworkClient.java:180) [kafka-clients-0.10.1.1.jar!/:?] 
    at org.apache.kafka.clients.consumer.internals.AbstractCoordinator.ensureCoordinatorReady(AbstractCoordinator.java:193) [kafka-clients-0.10.1.1.jar!/:?] 
    at org.apache.kafka.clients.consumer.internals.ConsumerCoordinator.poll(ConsumerCoordinator.java:248) [kafka-clients-0.10.1.1.jar!/:?] 
    at org.apache.kafka.clients.consumer.KafkaConsumer.pollOnce(KafkaConsumer.java:1013) [kafka-clients-0.10.1.1.jar!/:?] 
    at org.apache.kafka.clients.consumer.KafkaConsumer.poll(KafkaConsumer.java:979) [kafka-clients-0.10.1.1.jar!/:?] 
    at org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.run(KafkaMessageListenerContainer.java:532) [spring-kafka-1.1.2.RELEASE.jar!/:?] 
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:1.8.0_121] 
    at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_121] 
    at java.lang.Thread.run(Thread.java:745) [?:1.8.0_121] 

また、私は以下を参照してくださいサーバ側のログにエラー:

kafka.network.InvalidRequestException: Error getting request for apiKey: 3 and apiVersion: 2 
     at kafka.network.RequestChannel$Request.liftedTree2$1(RequestChannel.scala:95) 
     at kafka.network.RequestChannel$Request.<init>(RequestChannel.scala:87) 
     at kafka.network.Processor$$anonfun$processCompletedReceives$1.apply(SocketServer.scala:488) 
     at kafka.network.Processor$$anonfun$processCompletedReceives$1.apply(SocketServer.scala:483) 
     at scala.collection.Iterator$class.foreach(Iterator.scala:727) 
     at scala.collection.AbstractIterator.foreach(Iterator.scala:1157) 
     at scala.collection.IterableLike$class.foreach(IterableLike.scala:72) 
     at scala.collection.AbstractIterable.foreach(Iterable.scala:54) 
     at kafka.network.Processor.processCompletedReceives(SocketServer.scala:483) 
     at kafka.network.Processor.run(SocketServer.scala:413) 
     at java.lang.Thread.run(Thread.java:745) 
Caused by: java.lang.IllegalArgumentException: Invalid version for API key 3: 2 
     at org.apache.kafka.common.protocol.ProtoUtils.schemaFor(ProtoUtils.java:31) 
     at org.apache.kafka.common.protocol.ProtoUtils.requestSchema(ProtoUtils.java:44) 
     at org.apache.kafka.common.protocol.ProtoUtils.parseRequest(ProtoUtils.java:60) 
     at org.apache.kafka.common.requests.MetadataRequest.parse(MetadataRequest.java:96) 
     at org.apache.kafka.common.requests.AbstractRequest.getRequest(AbstractRequest.java:48) 
     at kafka.network.RequestChannel$Request.liftedTree2$1(RequestChannel.scala:92) 

私はいくつかを検索し、これが原因で、クライアントとサーバーの間で問題をバージョン管理の基本的ですが、これを解決する方法を見つけることができませんでした。

+0

バージョン0.10.0.xとカフカのクライアントが0.10.1.xブローカーと本当に互換性がないと春カフカのバージョン1.1.2.RELEASEはここで、iここでカフカクライアント0.10.1.1 が使用見つかったように見えますhttps://groups.google.com/forum/#!topic/confluent-platform/TyOMM8hDXOw –

+0

Ok - 依存関係を無効にして、実際にkafka-clientsバージョン0.10との依存関係を再宣言することで動作させました.0.1。しかし、これが適切なアプローチか、これを行うためのより良いアプローチがあるかどうかを知りたいですか? –

+0

それは正しいアプローチです。カフカのクライアントは、ブローカーと密接に結びついています。我々はすぐに0.10.2.xクライアントの1.2リリースをリリースする予定です。 2.0のスナップショットはすでにこれをサポートしています.2。 –

答えて

1

私は、以下のように依存関係のkafka-clientsをpom.xmlでオーバーライドして動作させました。

  <dependency> 
      <groupId>org.apache.kafka</groupId> 
      <artifactId>kafka-clients</artifactId> 
      <version>0.10.0.1</version> 
      <scope>compile</scope> 
      <exclusions> 
       <exclusion> 
        <artifactId>slf4j-api</artifactId> 
        <groupId>org.slf4j</groupId> 
       </exclusion> 
      </exclusions> 
     </dependency> 
関連する問題