2015-04-24 97 views
1
@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相關的主題。所以我想下面的東西
了:)首先,我所做的動物園管理員客戶端,如下圖所示:如何獲得apache kafka中的所有主題?

ZkClient(ZookeeperProps.zookeeperURL, ZookeeperProps.connectionTimeoutMs, ZookeeperProps.sessionTimeoutMs, ZKStringSerializer$.MODULE$); 
Seq<String> topics = ZkUtils.getAllTopics(zkClient); 

,但主題是空集,而與Java code.I執行我不是得到什麼這裏是問題。 我的Zookeeper道具如下:String zkConnect =「127.0.0.1:2181」; 動物園管理員運行得很好。
請幫助球員。

+0

請人幫助我。 – psan

回答

0

我寧願使用kafka-topics.sh這是一個內置的卡夫卡shell腳本來獲取主題。

+0

嗨感謝您的回覆。我只是想用API做同樣的事情。 – psan

5

這很簡單。 (我的例子是用Java編寫的,但它會在斯卡拉幾乎相同。)

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); 
     } 
    } 
} 

結果時,我有三個主題:測試,Test2和測試3

test 
test2 
test3 

圖片以下是我爲自己的博客文章而繪製的內容。當你瞭解Kafka使用的ZooKeeper樹的結構時,這將會很有幫助。 (它看起來非常小在這裏。在請一個新的標籤頁和縮放打開圖像。)

ZooKeeper tree

+0

對於'new ZooKeeper(...)'中的觀察者參數,kafka 0.7x null是不可接受的值,需要有虛擬參數。 –

相關問題