如何在Java中从kafka服务器获取主题列表

2022-09-02 00:25:52

我正在使用版本,并且非常新。kafka 0.8

我想知道中创建的主题列表及其元数据。是否有任何 API 可用于找出这一点?kafka server

基本上,我需要编写一个Java使用者,它应该自动发现中的任何主题。有API可以获取,但这需要主题名称作为输入参数。我需要服务器中存在的所有主题的信息。kafka serverTopicMetadata


答案 1

与卡夫卡 0.9.0

您可以使用提供的使用者方法列出服务器中的主题 listTopics();

例如。

Map<String, List<PartitionInfo> > topics;

Properties props = new Properties();
props.put("bootstrap.servers", "1.2.3.4:9092");
props.put("group.id", "test-consumer-group");
props.put("key.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
props.put("value.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");

KafkaConsumer<String, String> consumer = new KafkaConsumer<String, String>(props);
topics = consumer.listTopics();
consumer.close();

答案 2

我认为这是最好的方法:

ZkClient zkClient = new ZkClient("zkHost:zkPort");
List<String> topics = JavaConversions.asJavaList(ZkUtils.getAllTopics(zkClient));

推荐