@RequestMapping(value = "/getTopics",method = RequestMethod.GET)
@ResponseBody
public Response getAllTopics() {
ZkClient zkClient = new ZkClient(ZookeeperProps.zookeeperURL, ZookeeperProps.connectionTimeoutMs,
ZookeeperProps.sessionTimeoutMs, ZKStringSerializer$.MODULE$);
Seq<String> topics = ZkUtils.getAllTopics(zkClient);
scala.collection.Iterator<String> topicIterator = topics.iterator();
String allTopics = "";
while(topicIterator.hasNext()) {
allTopics+=topicIterator.next();
allTopics+="\n";
}
Response response = new Response();
response.setResponseMessage(allTopics);
return response;
}
我是apache kafka的新手。 现在有一天试图用zookeeper了解卡夫卡。 我想获取与zookeeper相关的主题。所以我正在尝试遵循的事情 a :)首先我创建了zookeeper客户端,如下所示:
ZkClient(ZookeeperProps.zookeeperURL, ZookeeperProps.connectionTimeoutMs, ZookeeperProps.sessionTimeoutMs, ZKStringSerializer$.MODULE$);
Seq<String> topics = ZkUtils.getAllTopics(zkClient);
但是在使用Java代码执行时主题是空白的。我没有得到这里的问题。 我的Zookeeper道具如下:String zkConnect =&#34; 127.0.0.1:2181&#34 ;; 动物园管理员跑得很好 请帮帮我们。
答案 0 :(得分:7)
这很简单。 (我的例子是用Java编写的,但在Scala中几乎是一样的。)
import java.util.List;
import org.apache.zookeeper.ZooKeeper;
public class KafkaTopicListFetcher {
public static void main(String[] args) throws Exception {
ZooKeeper zk = new ZooKeeper("localhost:2181", 10000, null);
List<String> topics = zk.getChildren("/brokers/topics", false);
for (String topic : topics) {
System.out.println(topic);
}
}
}
我有三个主题的结果:test,test2和test 3
test
test2
test3
下面的图片是我为自己的博客发布的内容。当您了解Kafka使用的ZooKeeper树的结构时,它会很有帮助。 (这里看起来很小。请在新标签中打开图片并放大。)
答案 1 :(得分:3)
您可以使用kafka AdminClient 。下面的代码段可能会帮助您:
Properties properties = new Properties();
properties.put(AdminClientConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9092");
AdminClient adminClient = AdminClient.create(properties);
ListTopicsOptions listTopicsOptions = new ListTopicsOptions();
listTopicsOptions.listInternal(true);
System.out.println(adminClient.listTopics(listTopicsOptions).names().get());
答案 2 :(得分:0)
我更喜欢使用kafka-topics.sh这是Kafka的内置shell脚本来获取主题。
答案 3 :(得分:0)
Kafka 客户端库具有 AdminClient API:支持管理和检查主题、代理、配置、ACL。
您可以找到
的代码示例