【发布时间】:2019-07-13 19:18:13
【问题描述】:
在我的 Kafka 制作人中,由于各种原因,我经常遇到 Timeout 异常。我目前正在使用生产者配置的所有默认值。
我看到了以下超时异常:
org.apache.kafka.common.errors.TimeoutException:更新失败 60000 毫秒后的元数据。
org.apache.kafka.common.errors.TimeoutException: Expiring 1 record(s) 对于 topic-1-0:自上次追加以来已过去 30001 毫秒
我有以下问题:
-
这些超时异常的一般原因是什么?
- 临时网络问题
- 服务器问题?如果是,那么什么样的服务器问题?
-
处理超时异常的一般准则是什么?
- 设置“重试”配置,以便 Kafka API 进行重试?
- 增加“request.timeout.ms”或“max.block.ms”?
- 捕获异常并让应用层重试发送消息,但这对于异步发送似乎很难,因为消息会乱序发送?
超时异常是可重试的异常吗?重试它们是否安全?
我正在使用 Kafka v2.1.0 和 Java 11。
提前致谢。
【问题讨论】:
-
你能解决这个问题吗?我也看到第二个问题非常断断续续,比如 2 个月左右一次,但下面的所有解决方案都指向不会断断续续的问题。如果您有防火墙阻止或 DNS 损坏,那么您将永久看到该问题。
-
在 kafka API 中启用调试日志记录后,我能够得到 TimeoutException 的原因。
-
你的情况是什么?
-
一年多了,不记得异常原因了。
标签: java apache-kafka kafka-producer-api timeoutexception