【发布时间】:2019-10-07 15:29:59
【问题描述】:
我正在使用 KafkaProducer.send() 方法将记录发布到 Kafka。 这是一种异步方法。我的应用程序正在向 Kafka 发布大约 20k 条记录。成功发送大约 10k 条记录后很多次我得到超时异常。我增加了 batch.size 和 linger.ms 这减少了问题,但有时我仍然会遇到超时异常。 有没有办法一次只发送 10k 条记录,等待它们完成然后发送下一批?我不想通过使用 send.get() 使其同步,因为这会使其非常慢。 这是我得到的例外。
Error publishing object on partition 0 org.apache.kafka.common.errors.TimeoutException: Expiring 1 record(s)
【问题讨论】:
-
你试过用flush()吗?这将阻止您的生产者并使所有消息“准备好发送”。
-
这是另一个完全相同的问题:stackoverflow.com/questions/46649748/…
-
我在发送每条消息后都在使用flush()。我不认为这对我有用。
-
你为什么在每条记录后使用
flush()?
标签: java apache-kafka kafka-producer-api