代码之家  ›  专栏  ›  技术社区  ›  user1393608

来自Kafka的元数据信息

  •  3
  • user1393608  · 技术社区  · 8 年前

    我是Confluent/Kafka的新手,我想从Kafka中找到元数据信息

    我想知道

    1. 生产者名单
    2. 主题列表
    3. 主题的架构信息

    合流版本为5.0

    哪些类(方法)可以提供这些信息?
    还有其他的API吗
    同时也是获得这些信息所必需的动物园管理员连接。

    1 回复  |  直到 8 年前
        1
  •  3
  •   OneCricketeer Gabriele Mariotti    8 年前

    1)我不认为Kafka代理知道生产商在主题中生成消息,因此没有命令行工具来列出这些消息。然而,对此的回答 SO question 建议您可以通过在JMX上查看MBeans来列出生产者。


    2)为了列出需要运行的主题:

    kafka-topics --zookeeper localhost:2181 --list
    

    否则,如果希望使用Java客户端列出主题,则可以调用 listTopics() 方法 KafkaConsumer .

    你也可以通过动物园管理员获取主题列表。

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


    3)要获取主题的模式信息,可以使用 Schema Registry API

    特别是,您可以通过以下方式获取所有主题:

    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
    

    为了在爪哇执行这些操作,您可以准备自己的GET请求(参见如何执行)。 here )或使用汇聚的模式注册Java客户端。您可以在它们的 Github repo .


    关于你关于动物园管理员的问题,请注意 ZK is a requirement for Kafka .

    卡夫卡使用ZooKeeper,因此如果 你还没有。你可以使用方便脚本 与卡夫卡包装,以获得一个快速和肮脏的单节点动物园管理员 实例。

    推荐文章