如果我们需要通过编程的方式来获取到TopicMetadataRequest请求到 def findLeader(topic: String): Unit = {

val consumer = connect("www.iteblog.com", 9092)

val req = TopicMetadataRequest(TopicMetadataRequest.CurrentVersion,

0, kafkaGroupId, List(topic))

val topicMetadataResponse = consumer.send(req)

val topicsMetadataSet = topicMetadataResponse.topicsMetadata

topicsMetadataSet.foreach { topicMetadata =>

println(topicMetadata.topic)

val metadataSet = topicMetadata.partitionsMetadata

metadataSet.foreach { metadata =>

val partitionId = metadata.partitionId

val isr = metadata.isr.map(_.connectionString).mkString("[", ",", "]")

val replicas = metadata.replicas.map(_.connectionString).mkString("[", ",", "]")

val leader = metadata.leader.map (_.connectionString).get

println(s"\tPartition: $partitionId, Leader: $leader Replicas: $replicas ISR: $isr")

}

}

}

TopicMetadataRequest是一个case class,其各个参数如下: case class TopicMetadataRequest(val versionId: Short,

val correlationId: Int,

val clientId: String,

val topics: Seq[String])

构造完成TopicMetadataRequest之后,通过SimpleConsumer的send方法发送请求,然后返回TopicMetadataResponse对象,其中就包含了Topic各个分区的相关信息,我们运行这个函数,可以得到以下的信息: iteblog

Partition: 0, Leader: www.iteblog.com:9091 Replicas: [www.iteblog.com:9091] ISR: [www.iteblog.com:9091]

Partition: 1, Leader: www.iteblog.com:9097 Replicas: [www.iteblog.com:9097] ISR: [www.iteblog.com:9097]

Partition: 2, Leader: www.iteblog.com:9095 Replicas: [www.iteblog.com:9095] ISR: [www.iteblog.com:9095]

Partition: 3, Leader: www.iteblog.com:9096 Replicas: [www.iteblog.com:9096] ISR: [www.iteblog.com:9096]

Partition: 4, Leader: www.iteblog.com:9094 Replicas: [www.iteblog.com:9094] ISR: [www.iteblog.com:9094]

Partition: 5, Leader: www.iteblog.com:9092 Replicas: [www.iteblog.com:9092] ISR: [www.iteblog.com:9092]

Partition: 6, Leader: www.iteblog.com:9093 Replicas: [www.iteblog.com:9093] ISR: [www.iteblog.com:9093]

这个输出是不是很熟悉,是的,输出的结果类似于运行以下的Kafka自带系统命令: [iteblog@www.iteblog.com kafka]$ ./bin/kafka-topics.sh --topic iteblog --describe \

--zookeeper www.iteblog.com

Topic:iteblog PartitionCount:7 ReplicationFactor:2 Configs:

Topic: iteblog Partition: 0 Leader: 1 Replicas: 1 Isr: 1

Topic: iteblog Partition: 1 Leader: 7 Replicas: 7 Isr: 7

Topic: iteblog Partition: 2 Leader: 5 Replicas: 5 Isr: 5

Topic: iteblog Partition: 3 Leader: 6 Replicas: 6 Isr: 6

Topic: iteblog Partition: 4 Leader: 4 Replicas: 4 Isr: 4

Topic: iteblog Partition: 5 Leader: 2 Replicas: 2 Isr: 2

Topic: iteblog Partition: 6 Leader: 3 Replicas: 3 Isr: 3

如果我们设置空的topic的列表,如:TopicMetadataRequest(TopicMetadataRequest.CurrentVersion, 0, kafkaGroupId, Seq()),那么我们可以获取Kafka server中所有Topic的信息。

kafka java获取topic_通过编程方式获取Kafka中Topic的Metadata信息相关推荐

  1. android的padding属性,以编程方式获取android:padding属性

    从一个角度来看,如何以编程方式获取android:padding属性的值? 我目前正在使用: private static final String ANDROID_NAMESPACE = " ...

  2. 如何通过编程方式获取alexa排名的数据

    Alexa 是以发布世界网站排名而引人注目的一个网站.其实,此网站的搜索引擎也很好用,但是"网站排名"却是它吸引眼球的最主要原因.      以网站导航起家的Alexa创建于199 ...

  3. java layout_java - 以编程方式在LinearLayout中设置边距

    java - 以编程方式在LinearLayout中设置边距 我正在尝试使用Java(而不是XML)创建一个LinearLayout,其中的按钮可以填充屏幕并具有边距. 这是没有边距的代码: Line ...

  4. java menuitem 图标_java – 如何以编程方式更改ActionBar中的MenuItem图标

    如何以编程方式更改ActionBar中的MenuItem图标?我试着用 MenuItem menuItem = (MenuItem)findViewById(R.id.action_settings) ...

  5. 在Android中,如何以编程方式在dp中设置边距?

    本文翻译自:In Android, how do I set margins in dp programmatically? In this , this and this thread I trie ...

  6. 以编程方式使用 Word 中的内置对话框

    以编程方式使用 Word 中的内置对话框 Visual Studio 2012        其他版本                    Visual Studio 2010 Visual Stu ...

  7. java 生成csr_Java以编程方式生成CSR

    java 生成csr Recently I had to write a program to generate Certificate Signing Request (CSR) using Jav ...

  8. java ca认证_java编程方式生成CA证书

    下面是java编程方式生成CA证书的代码,使用的是BC的provider.生成CA证书与生成普通证书的区别是:1,生成CA证书时,issuer和subject一致:2,在ContentSigner.b ...

  9. java searchview_如何以编程方式打开SearchView?

    问题 ActionBar有一个名为"SearchView"的小部件.当它不使用时,它看起来像这样: 当它在使用时,它看起来像这样: 我想(当然是以编程方式)打开searchview ...

最新文章

  1. opengl入门资料
  2. ASP.NET MVC Core的TagHelper (高级特性)
  3. Mysql基础运用(视图,变量,存储,流程控制)
  4. python中常用的语句元素
  5. HDU 2612 Find a way
  6. 轻博客\博客\微博对比
  7. 别再用if-else了,用注解去代替他吧
  8. 【python】numpy array 找出符合条件的数并赋值
  9. ctf 绕过php,Bugku-CTF之各种绕过
  10. java中for 的几种常见用法
  11. 尚硅谷-智慧校园项目总结(项目代码在最后)
  12. 人生之路优化,bug修复
  13. Asp.Net Web 项目部署到阿里云 Windows版本服务器
  14. beautifulsoup+requests链家(深圳)爬取及可视化分析
  15. 武汉服务器眼中的黄鹤楼
  16. WINVNC源码阅读(二)
  17. poj_2945 Find the Clones (Trie树 内存分配)
  18. Web自定义表单工具和协同办公系统之集成(1)
  19. 圣诞要到了~教你用Python制作一个表白神器——照片墙,祝你成功
  20. vue项目实现大屏展示 自适应问题

热门文章

  1. 通过微型计算机的电流,单板微型计算机控制的电流型变频调速系统
  2. java书面_Java程序猿的书面采访String3
  3. lintcode 最长上升连续子序列 II(二维最长上升连续序列)
  4. php 递归实现无限极分类和排序_PHP实现选择排序
  5. php mysql 索引_MySQL索引
  6. Java并发篇_volatile
  7. Kewail-邮件短信接口的基础教程
  8. (十三)java版spring cloud+spring boot+redis社交电子商务平台-springboot集成spring cache...
  9. shell脚本:批量修改文件名(文件名中添加字符)
  10. 关于MapReduce单词统计的例子: