我是Confluent / Kafka的新手,我想从kafka中找到元数据信息
我想知道
融合版本为5.0
可以提供此信息的类(方法)是什么?
是否有相同的Rest API?
获取此信息也是必要的Zookeeper连接。
答案 0 :(得分:3)
1)我不认为Kafka经纪人知道生产者在主题中生成消息,因此没有用于列出消息的命令行工具。但是,对此SO question的回答表明,您可以通过查看JMX上的MBean来列出生产者。
2)为了列出您需要运行的主题:
kafka-topics --zookeeper localhost:2181 --list
否则,如果要使用Java客户端列出主题,则可以调用KafkaConsumer
的{{3}}方法。
您还可以通过ZooKeeper获取主题列表
ZkClient zkClient = new ZkClient("zkHost:zkPort");
List<String> topics = JavaConversions.asJavaList(ZkUtils.getAllTopics(zkClient));
3)要获取主题的模式信息,可以使用listTopics()
特别是,您可以通过调用以下内容来获取所有主题:
GET /subjects HTTP/1.1
Host: schemaregistry.example.com
Accept: application/vnd.schemaregistry.v1+json, application/vnd.schemaregistry+json, application/json
应该给出与以下类似的响应:
HTTP/1.1 200 OK
Content-Type: application/vnd.schemaregistry.v1+json
["subject1", "subject2"]
然后您可以获取特定主题的所有版本:
GET /subjects/subject-name/versions HTTP/1.1
Host: schemaregistry.example.com
Accept: application/vnd.schemaregistry.v1+json, application/vnd.schemaregistry+json, application/json
最后,您可以获得在此主题下注册的架构的特定版本
GET /subjects/subject_name/versions/1 HTTP/1.1
Host: schemaregistry.example.com
Accept: application/vnd.schemaregistry.v1+json, application/vnd.schemaregistry+json, application/json
或者只是最新注册的架构:
GET /subjects/subject-name/versions/latest HTTP/1.1
Host: schemaregistry.example.com
Accept: application/vnd.schemaregistry.v1+json, application/vnd.schemaregistry+json, application/json
为了在Java中执行此类操作,您可以准备自己的GET请求(请参见Schema Registry API),也可以使用Confluent的Schema Registry Java Client。您可以在其here中查看实现及其可用方法。
关于您的Zookeeper问题,请注意Github repo。
Kafka使用ZooKeeper,因此如果出现以下情况,您首先需要启动ZooKeeper服务器 您还没有一个。您可以使用便捷脚本 与kafka打包在一起以获取快速,肮脏的单节点ZooKeeper 实例。