【问题标题】:Apache KafkaProducer throwing TimeoutException when sending a messageApache KafkaProducer 在发送消息时抛出 TimeoutException
【发布时间】:2017-03-30 00:47:33
【问题描述】:

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

【问题讨论】:

  • 机器是否在 IaaS 环境中托管代理?如果是这样,您最好设置advertedd.host.name 配置并让客户端连接到它们。
  • 如果我之前在它工作时没有设置该值,并且我没有在它工作的其他服务器上设置该值,为什么现在设置它会有帮助?
  • 你试过用 kafka-console-producer 运行吗?

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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2017-12-06
    • 1970-01-01
    • 2018-06-02
    • 2019-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-21
    相关资源
    最近更新 更多