Apache kafka 卡夫卡流:案例;协调器选择的分配协议无效:null“;

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: "

我在Kafka Streams应用程序(2.1版)的日志中发现了这个问题

Kafka客户端库中的代码似乎很简单,其中找不到赋值人:

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;
}