如何使用Java API找到主题的复制因子



我很难弄清楚如何使用Java API获得主题的复制因子。

我尝试过AdminClient,但没有成功。

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

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

您基本上需要计算任何分区的副本数量(假设没有正在进行的重新分配(。这就是TopicCommand(kafka-topics.sh(的作用:https://github.com/apache/kafka/blob/trunk/core/src/main/scala/kafka/admin/TopicCommand.scala#L577-L591

DescribeTopicsResult describeTopics = admin.describeTopics(topics);
Map<String, TopicDescription> descriptions = describeTopics.all().get();
for (Map.Entry<String, TopicDescription> entry : descriptions.entrySet()) {
TopicDescription td = entry.getValue();
int replicationFactor = td.partitions().get(0).replicas().size();
System.out.println(entry.getKey() + " - " + replicationFactor);
}

最新更新