Apache KafkaProducer在发送消息时抛出TimeoutException

时间:2016-11-15 23:38:48

标签: scala apache-kafka kafka-producer-api

我有一个KafkaProducer在我尝试发送消息时突然开始抛出TimeoutExceptions。即使我已将max.block.ms属性设置为60000毫秒,并且测试块已设置为60秒,但我得到的错误消息总是小于200毫秒。实际显示60000ms的唯一时间是我在调试模式下运行并手动逐步执行waitOnMetadata方法。

错误示例:
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)

1 个答案:

答案 0 :(得分:1)

我尝试使用控制台生成器来查看是否可以发送消息,并且我收到了很多WARN Error while fetching metadata with correlation id 0 : {metadata-1=LEADER_NOT_AVAILABLE} (org.apache.kafka.clients.NetworkClient)消息。停止并重新启动代理后,我可以再次发送和使用消息。