【发布时间】:2018-09-15 05:33:08
【问题描述】:
我有一个连接到 Kafka(服务器 0.10.1 和客户端是 0.10.2)代理的 kafka 客户端代码。代码中有 2 个主题和 2 个不同的消费者组,还有一个生产者。偶尔从生产者代码中获取 NetworkException(2 天一次,5 天一次,...)。我们在两个消费者组的日志中看到消费者组(重新)加入信息,然后是来自生产者 future.get() 调用的 NetworkException。不知道为什么我们会收到此错误。
代码:-
final Future<RecordMetadata> futureResponse =
producer.send(new ProducerRecord<>("ping_topic", "ping"));
futureResponse.get();
例外:-
org.apache.kafka.common.errors.NetworkException: The server disconnected before a response was received.
java.util.concurrent.ExecutionException: org.apache.kafka.common.errors.NetworkException: The server disconnected before a response was received.
at org.apache.kafka.clients.producer.internals.FutureRecordMetadata.valueOrError(FutureRecordMetadata.java:70)
at org.apache.kafka.clients.producer.internals.FutureRecordMetadata.get(FutureRecordMetadata.java:57)
at org.apache.kafka.clients.producer.internals.FutureRecordMetadata.get(FutureRecordMetadata.java:25)
NetworkException 的 Kafka API 定义,
“发出请求时发生其他与网络相关的 IOException。 这可能是因为客户端的元数据已经过时了 向现在已死的节点发出请求。”
谢谢
【问题讨论】:
-
您好,您找到解决方案了吗?我认为 Kafka 社区甚至不想帮助解决与此问题相关的问题,甚至他们还没有找到解决方案。
-
@Rakesh 社区无法解决很可能非常特定于安装 Kafka 的环境的网络问题。至少,需要添加生产者和代理设置,需要在每个组件上启用 TRACE 日志记录并捕获,然后如果认为是实际的 Kafka 问题,可能会提交 JIRA
-
@cricket_007 我的意思是说,如果开发人员在 StackOverflow 等论坛上遇到他们的 api 问题,如果没有为此类问题提供解决方案,他们必须做出回应。
-
@Rakesh “必须”是一个强词……我们都是志愿者。我们没有必须作出回应,尤其是在没有足够的信息可以提供的情况下
标签: apache-kafka kafka-producer-api