【发布时间】:2016-11-16 09:45:21
【问题描述】:
val props = new Properties()
props.put("bootstrap.servers", "foo:9092,bar:9092")
props.put("acks", "all")
props.put("retries", 1)
props.put("batch.size", 10000)
props.put("linger.ms", 5)
props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer")
props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer")
try {
producer.send(new ProducerRecord[String, String](topic, key, msg.toJson)).get()
true
} catch {
case ex: Throwable => {
println(ex)
false
}
}
这段代码抛出异常
java.util.concurrent.ExecutionException: org.apache.kafka.common.errors.TimeoutException: Failed to update metadata after 48 ms.\n\tat
org.apache.kafka.clients.producer.KafkaProducer$FutureFailure.<init>(KafkaProducer.java:686)\n\tat
org.apache.kafka.clients.producer.KafkaProducer.send(KafkaProducer.java:449)\n\tat
org.apache.kafka.clients.producer.KafkaProducer.send(KafkaProducer.java:339)\
请注意,我正在针对生产集群发布数据,因此它已启动并运行,并且许多应用程序已经成功地将消息发布到该主题。只是我的代码无法发布。
【问题讨论】:
-
我注意到 max.block.ms 设置为 48 ms,这是一个极低的值。为什么要设置这样的值来检索元数据?
-
@amethystic 这不在给定的配置中,你从哪里得到的?
-
来自“48ms 后更新元数据失败”。
-
-
客户端无法从broker获取元数据,所以请确保连接到foo:9092和bar:9092
标签: scala apache-kafka