动态获取经纪人列表

时间:2016-05-13 16:52:07

标签: apache-kafka

我是卡夫卡的新手。我写了这样的第一个消息制作人

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

我是否有可能引导到Kafka并询问它们存在哪些经纪人,然后将它们放入属性中?否则,总会出现代码配置与群集的实际状态不同步的问题。

1 个答案:

答案 0 :(得分:1)

通常,kafka经纪人将由zookeeper管理,因此您可以访问zookeeper实例以收集有关kafka经纪人的信息。

例如,您可以使用org.apache.storm.shade.org.apache.zookeeper.ZooKeeper实例连接到Zookeeper,并运行其getChildren(pathToBrokerIds, false)方法,该方法返回kafka代理列表的ID列表。 然后你可以运行zookeeper的getData(..)方法,每个id作为参数,并获取该代理的信息,包括主机和端口。