简体   繁体   English

如何从 Java 代码中获取 Kafka Topic 的复制因子

[英]How to get Replication Factor of Kafka Topic from Java code

I have some topic name and i should to get info about it's replication factor from my Java application.我有一些主题名称,我应该从我的 Java 应用程序中获取有关它的复制因子的信息。 I tried to do that with zookeeper library:我试图用 zookeeper 库做到这一点:

ZooKeeper zooKeeper = new ZooKeeper("localhost:22181", 10000, null);
String s = new String(zooKeeper.getData("/brokers/topics/" + KafkaTopicConfig.TOPIC_NAME, false, null));

But it has now info about replication factor, only info about current replicas count.但它现在有关于复制因子的信息,只有关于当前副本数的信息。 I tried to do that with kafka-client api:我试图用 kafka-client api 做到这一点:

TopicDescription topicDescriptionKafkaFuture = describeTopicsResult.values().get(KafkaTopicConfig.TOPIC_NAME).get();

But there is also no info about topic's replication factor.但是也没有关于主题复制因子的信息。 Is there anyway to get that info from Java Code?有没有办法从 Java 代码中获取这些信息?

Yes, it is possible.对的,这是可能的。 All the shell scripts are just Java (or Scala) code!所有的 shell 脚本都只是 Java(或 Scala)代码!

In the source code of kafka-topics --describe --topic , it looks at partitions(0).replicaskafka-topics --describe --topic的源代码中,它查看partitions(0).replicas

从 describeTopics 开始,通过 TopicDescription,您最终会得到一个包含副本信息的 TopicPartitionInfo 列表。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM