2016-11-15 6 views
0

私はメッセージを送信しようとしたときに突然TimeoutExceptionsを投げ始めたKafkaProducerがあります。 max.block.msプロパティを60000msに設定し、テストブロックを60sに設定しても、エラーメッセージは常に200ms未満の時間になります。実際に60000msを表示する唯一の時間は、デバッグモードで実行し、手動でwaitOnMetadataメソッドを実行する場合です。Apache KafkaProducerがメッセージを送信するときにTimeoutExceptionをスローする

エラー例:突然のメタデータを更新することができない理由
org.apache.kafka.common.errors.TimeoutException: Failed to update metadata after 101 ms.

誰でも知っていますか?プロデューサーの実装が間違っているのは分かっています。私がテストを別のサーバーで実行すると、それが動作してから変更していないだけでなく、すべてが成功しました。これにはどんなサーバー側の理由がありますか?ブローカーを再起動する必要がありますか?そして、なぜ私はそれを実行させる場合、タイムアウトメッセージは、不正な時間を表示するのだろうか?

プロデューサーのセットアップ:

val props = new Properties() 
props.put("bootstrap.servers", getBootstrapServersFor(datacenter.mesosLocal)) 
props.put("batch.size","0") 
props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer") 
props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer") 
props.put("max.block.ms","60000") 
new KafkaProducer[String,String](props) 
+0

マシンはIaaS環境でブローカーをホストしていますか?その場合は、advertised.host.name configを設定し、クライアントに接続するようにしてください。 – amethystic

+0

動作していた前の値を設定していないのに、動作している他のサーバの値を設定していない場合、なぜ今設定するのが助かりますか? – annedroiid

+1

kafka-console-producerを実行しようとしましたか? –

答えて

1

私は、メッセージを送ることができ、私は戻ってWARN Error while fetching metadata with correlation id 0 : {metadata-1=LEADER_NOT_AVAILABLE} (org.apache.kafka.clients.NetworkClient)メッセージの多くを得たかどうかを確認するために、コンソールのプロデューサーを使用しようとしました。ブローカを停止して再起動した後、私は再びメッセージを送信して消費することができました。

関連する問題