2016-05-13 80 views
1

我是卡夫卡新手。我寫了這樣的動態獲取經紀商名單

private Properties kafkaProps = new Properties(); 
kafkaProps.put("bootstrap.servers", "broker1:9092,broker2:9092"); 
kafkaProps.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer"); 
kafkaProps.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer"); 
producer = new KafkaProducer<String, String>(kafkaProps); 

我的第一個消息生產者是有可能,我引導到卡夫卡,並要求它什麼經紀人的存在,然後把他們的屬性?否則,總會有一個問題,即代碼的配置與羣集的實際狀態不同步。

回答

1

通常,卡夫卡經紀人將由動物園管理員管理,因此您可以訪問動物園管理員實例以收集有關卡夫卡經紀人的信息。

例如,您可以使用org.apache.storm.shade.org.apache.zookeeper.ZooKeeper實例連接到Zookeeper,並運行其getChildren(pathToBrokerIds, false)方法,該方法返回kafka代理的ids列表。 然後,您可以運行zookeeper的getData(..)方法,將每個ID作爲參數,並獲取該代理的信息,包括主機和端口。

+0

我如何知道'pathToBrokerIds' –

+0

這取決於您的動物園管理員配置,但默認應該是「/ brokers/ids」。 – theDima