2016-08-30 4 views
0

なぜkafka 0.10コンソールプロデューサーがkafka 0.9にメッセージを送信できないのですか?なぜkafka 0.10コンソールプロデューサーがkafka 0.9にメッセージを送信できないのですか?

バージョン0.9(サーバー側)でkafkaコンソールコンシューマーを開始します。 私はカフカコンソールプロデューサーをバージョン0.10(クライアント側)から開始しています。 次に、私はプロデューサーの例外を受けました(下記)。

新しいプロデューサが古いコンシューマにメッセージを送信できない可能性はありますか? 旧式のカフカにメッセージを送信するために、新しいプロデューサを一種の推奨されないモードに設定することはできますか?

$ビンの\ WINDOWS \カフカ-コンソールproducer.bat --brokerリストMY_SERVER:9092 --topic my_topic

[2016年8月30日14:03:53365]カフカのプロデューサーでERROR不明なエラーI/Oスレッド:(org.apache.kafka.clients.producer.internals.Sender) org.apache.kafka.common.protocol.types.SchemaException: 'brokers'フィールドの読み込み中にエラーが発生しました: 'host'フィールドの読み込み中にエラーが発生しました:エラー長さ25452の読み取り文字列、利用可能なのは69バイトのみ 、org.apache.kafka.common.protocol.types.Schema.read(Schema.java:73) at org.apache.kafka.clients.NetworkClient.parseResponse(NetworkClient。 java:380) at org.apache.kafka.clients.NetworkClient.handleCompletedReceives(NetworkClien t.java:449) at org.apache.kafka.clients.NetworkClient.poll(NetworkClient.java:269) at org.apache.kafka.clients.producer.internals.Sender.run(Sender.java:229) org.apache.kafka.clients.producer.internals.Sender.run java.lang.Thread.runで(Sender.java:134) (Thread.java:745)

+0

ルールは 'まずブローカーをアップグレードしてから、クライアントです。そうでない場合は – serejja

+0

ありがとうございますが、私は何の意味もなく、なぜ新しいkafka 0.10.0.0プロデューサーは古いカフカコンシューマー0.9.0.0と話すことができません。 –

答えて

2

カフカ0.10.0で 導入しました新しいメッセージ形式。私は完全にはわかりませんが、それについては何も知らないブローカーに新しいフォーマットのメッセージを送信しているようです。

0.10プロデューサに古いメッセージ形式を使用させてください。ここであなたはより多くの情報を見つけることができます:http://kafka.apache.org/documentation.html#upgrade_10_breaking

+0

答えをありがとう、しかし事はそれほど単純ではありません。 私は「反対」のカフカが0.9.0.0であるのでinterbroker.protocol.version = 0.9.0.0を追加しました。例外はあります。 [2016-08-31 08:08:27,809] FATAL(kafka.Kafka $) java.lang.IllegalArgumentException:要求に失敗しました:log.message.format.version inter.broker.protocol.versionが0.9.0.0に設定されている場合、0.10.0-IV1は使用できません 一方、JAVAプロデューサーAPIプロトコルを直接制御するメソッドはありません。そのため、JAVA API 0.10.0.0からKafka 0.9.0.0にメッセージを送信できます。 –

関連する問題