KafkaConsumer永远不会退出.poll方法 - GroupCoordinatorNotAvailableException

时间:2016-11-09 02:20:56

标签: java apache-kafka kafka-consumer-api

我在java中有KafkaConsumer的实现,目前它永远不会退出.poll方法。当我在调试模式下深入查看源代码时,我发现它在AbstractCoordinator.ensureCoordinatorKnown()中的while循环中陷入困境,因为从未找到协调器。

循环中从sendGroupMetadataRequest()返回的未来首次使用org.apache.kafka.clients.consumer.internals.SendFailedException失败,然后随后org.apache.kafka.common.errors.GroupCoordinatorNotAvailableException: The group coordinator is not available.失败。有谁知道为什么会发生这种情况?

如果我使用控制台生产者/消费者,我能够成功发送和接收消息,只有当我使用我的KafkaConsumer实现时。此外,消费者确实在我的两台服务器上工作,所以我知道它不是消费者的实现。

以下是我的消费者创建的属性:

Properties props = new Properties();
props.put("bootstrap.servers", "myserver:9000);
props.put("key.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
props.put("value.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
props.put("group.id", groupId);
props.put("enable.auto.commit", "true");
props.put("auto.commit.interval.ms", "1000");
props.put("session.timeout.ms", "30000");

修改

主题肯定是在消费者开始之前创建的。

编辑2: 我删除了我的集群中的所有代理并重新创建它们,现在我在另一个点上失败了。在AbstractCoordinator.ensureActiveGroup()尝试重新加入时,从performGroupJoin()返回的未来会多次失败并显示org.apache.kafka.common.errors.NotCoordinatorForGroupException: This is not the correct coordinator for this group.。仍然不确定发生了什么。

编辑3: 我删除了代理并使用不同的id重新创建它们,现在.poll()方法正在返回并且它已成功使用消息。我仍然想知道为什么它首先失败,所以我可以确保它不会再次发生。

1 个答案:

答案 0 :(得分:0)

删除经纪人并创建新的经纪人解决了这个问题。尽管如此,仍然不确定经纪人是否出错。