Apache kafka 卡夫卡流:案例;协调器选择的分配协议无效:null“;
我在Kafka Streams应用程序(2.1版)的日志中发现了这个问题 Kafka客户端库中的代码似乎很简单,其中找不到赋值人:Apache kafka 卡夫卡流:案例;协调器选择的分配协议无效:null“;,apache-kafka,apache-kafka-streams,Apache Kafka,Apache Kafka Streams,我在Kafka Streams应用程序(2.1版)的日志中发现了这个问题 Kafka客户端库中的代码似乎很简单,其中找不到赋值人: PartitionAssignor assignor = lookupAssignor(assignmentStrategy); if (assignor == null) throw new IllegalStateException("Coordinator selected invalid assignment protocol: "
PartitionAssignor assignor = lookupAssignor(assignmentStrategy);
if (assignor == null)
throw new IllegalStateException("Coordinator selected invalid
assignment protocol: " + assignmentStrategy);
lookupAssignor只是按名称查找:
private PartitionAssignor lookupAssignor(String name) {
for (PartitionAssignor assignor : this.assignors) {
if (assignor.name().equals(name))
return assignor;
}
return null;
}
在什么情况下,Kafka Streams应用程序可能会发生这种情况?结果是什么?听起来像是不同应用程序的重叠。如果您有两个独立的应用程序,它们意外地使用了相同的
group.id
,则可能会发生这种情况。特别是如果您有KafkaStreams应用程序和一个使用相同组id的“普通消费者”,但这些情况都不是。然而,当时一些KS任务正在自动重启(通过Docker)。但即便如此,在这种情况下,是什么导致了它?@MatthiasJ.Sax我们也遇到了这个问题。具有相同应用程序的多个实例,但它们的groupId/主题名称中有前缀。卡夫卡流2.2,集群在5.1.2上。集群负载很重。关于我们可以看什么有什么想法吗?除了我已经说过的重叠group.id
之外,没有其他想法。也许检查一下Jira是否有什么,也许打开一个bug报告?
private PartitionAssignor lookupAssignor(String name) {
for (PartitionAssignor assignor : this.assignors) {
if (assignor.name().equals(name))
return assignor;
}
return null;
}