[英]How to get All Topics in apache kafka?
@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理解kafka。 我想获取与 zookeeper 相关的主题。 所以我正在尝试以下事情
a:) 首先我制作了zookeeper客户端,如下所示:
ZkClient(ZookeeperProps.zookeeperURL, ZookeeperProps.connectionTimeoutMs, ZookeeperProps.sessionTimeoutMs, ZKStringSerializer$.MODULE$);
Seq<String> topics = ZkUtils.getAllTopics(zkClient);
但是在使用 Java 代码执行时,主题是空白的。我不明白这里有什么问题。 我的 Zookeeper 道具如下: String zkConnect = "127.0.0.1:2181"; 并且动物园管理员运行得非常好。
请帮助伙计们。
这很简单。 (我的示例是用 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 树的结构时,这将很有帮助。 (这里看起来很小。请在新选项卡中打开图像并放大。)
您可以使用 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());
我更喜欢使用 kafka-topics.sh ,它是 Kafka 的内置 shell 脚本来获取主题。
Kafka 客户端库具有 AdminClient API:它支持管理和检查主题、代理、配置、ACL。
您可以找到以下代码示例
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.