我很难弄清楚如何使用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);
}