如何使用JavaAPI查找主题的复制因子?

如何使用JavaAPI查找主题的复制因子?,java,apache-kafka,Java,Apache Kafka,我很难弄清楚如何使用JavaAPI获取主题的复制因子 我试过AdminClient,但没有成功 listTopics() - returns the list of topics and #of partitions per topic describeConfigs() - return other metadata such as retention.ms, cleanup policy etc 是的,通过管理API获取复制因子不是很直观 您基本上需要计算任何分区的副本数量(假设没有正在进

我很难弄清楚如何使用JavaAPI获取主题的复制因子

我试过AdminClient,但没有成功

listTopics() - returns the list of topics and #of partitions per topic
describeConfigs() - return other metadata such as retention.ms, cleanup policy etc

是的,通过管理API获取复制因子不是很直观

您基本上需要计算任何分区的副本数量(假设没有正在进行的重新分配)。这就是
TopicCommand
kafka topics.sh
)所做的:

descripbetopics结果descripbetopics=admin.descripbetopics(主题);
Map descriptions=descripbetopics.all().get();
for(Map.Entry:descriptions.entrySet()){
TopicDescription td=entry.getValue();
int replicationFactor=td.partitions().get(0.replications().size();
System.out.println(entry.getKey()+“-”+replicationFactor);
}

是的,通过管理API获取复制因子不是很直观

您基本上需要计算任何分区的副本数量(假设没有正在进行的重新分配)。这就是
TopicCommand
kafka topics.sh
)所做的:

descripbetopics结果descripbetopics=admin.descripbetopics(主题);
Map descriptions=descripbetopics.all().get();
for(Map.Entry:descriptions.entrySet()){
TopicDescription td=entry.getValue();
int replicationFactor=td.partitions().get(0.replications().size();
System.out.println(entry.getKey()+“-”+replicationFactor);
}

这不会检索到活动副本的数量吗?您所说的“活动”副本是什么意思
replicas()
返回有效定义复制因子的分配。假设我们有一个2节点集群。包含两个副本的主题:一个放置在主机x上,另一个放置在主机y上。如果host-y关闭,那么我认为td.partitions().get(0.repliacas().size()将返回1&当host-y打开时,它将返回2.No。即使代理已关闭,它也会在副本列表中。您可能把它与
isr()
混淆了。这难道不能检索到活动副本的数量吗?您所说的“活动”副本是什么意思
replicas()
返回有效定义复制因子的分配。假设我们有一个2节点集群。包含两个副本的主题:一个放置在主机x上,另一个放置在主机y上。如果host-y关闭,那么我认为td.partitions().get(0.repliacas().size()将返回1&当host-y打开时,它将返回2.No。即使代理已关闭,它也会在副本列表中。您可能把它与
isr()
混淆了。