kafka java獲取topic_通過編程方式獲取Kafka中Topic的Metadata信息

如果我們需要通過編程的方式來獲取到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的信息。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/539627.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/539627.shtml
英文地址,請注明出處:http://en.pswp.cn/news/539627.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

redis java 遍歷key_java遍歷讀取整個redis數據庫實例

redis提供了靈活的數據查詢方式,最牛的就是key的搜索支持正則表達式。jedis.keys(“*”);表示搜索所有keyjedis.keys(“abc*”)表示搜索開頭為abc的key數據遍歷了key就能遍歷到value。其實就是一個setRedisDO rd new RedisDO();rd.open();Set s rd.jedis.keys(&qu…

js學習

為什么80%的碼農都做不了架構師?>>> /* my code */ var gArrSpell [ 1111, 2222, 3333, 4444, 5555, 6666, 7777, 8888, 999999, AAAA, bbbb, cccc, dddd, eeee, fffff ];var gArrSplDmg [11,12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24…

代碼在eclipse下不報錯,在doc命令行下報錯--jar file和runable jar file

今天開發一個小工具,引用了Log4j,來記錄日志,在eclipse下運行,代碼正常,打包成jar放到doc命令行下運行報錯: Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/logging/…

gradle java ide_使用Gradle構建Java項目

使用Gradle構建Java項目這個手冊將通過一個簡單的Java項目向大家介紹如何使用Gradle構建Java項目。我們將要做什么?我們將在這篇文檔航中創建一個簡單的Java項目,然后使用Gradle構建它。需要準備什么?預留15分鐘空閑時間一件稱手的兵器(你最喜…

小馬激活軟件下載,當心偽小馬,有病毒

官方的小馬激活軟件已經停止更新了,下文是官方停更公告。 http://www.pccppc.com/xiaomajihuo-html 所以小馬oem7以后的都不是官方的,包含病毒。重裝系統后,一般是先激活系統,再安裝殺毒軟件,這就給“偽小馬激活工具”…

truncate,delete,drop之間的區別

TRUNCATE TABLE 在功能上與不帶 WHERE 子句的 DELETE 語句相同:二者均刪除表中的全部行。 但 TRUNCATE TABLE 比 DELETE 速度快,且使用的系統和事務日志資源少。 DELETE 語句每次刪除一行,并在事務日志中為所刪除的每行記錄一項。 TRUNCATE…

三張圖搞懂JavaScript的原型對象與原型鏈

對于新人來說,JavaScript的原型是一個很讓人頭疼的事情,一來prototype容易與__proto__混淆,二來它們之間的各種指向實在有些復雜,其實市面上已經有非常多的文章在嘗試說清楚,有一張所謂很經典的圖,上面畫了…

python partial_如何在python多處理模塊中使用partial函數?

下面是我如何解決這個問題的一個簡單例子from functools import partialfrom multiprocessing import Pooldef VariadicLifter(func, args):return func(*args)def func(x,y,z,a):return x2*y3*z4*aif __name__ __main__:func_ partial( func, 500, 1007)lfunc_ partial( Va…

Mybatis中resultMap

MyBatis中在查詢進行select映射的時候,返回類型可以用resultType,也可以用resultMap,resultType是直接 表示返回類型的,而resultMap則是對外部ResultMap的引用,但是resultType跟resultMap不能同時存在。 1.resultType …

超簡單的mysql多實例布置

一、基本概念mysql下載:http://mirrors.sohu.com/mysql/MySQL-5.5/1、MySQL多實例就是在一臺機器上面開啟多個不同的端口,運行多個MySQL服務進程。這些MySQL多實例公用一套安裝程序,使用不同的(也可以是相同的)配置文件,啟動程序&…

java程序設計計算器_Java程序設計計算器(含代碼)

Java程序課程設計任務書實用性計算器的設計與開發1、主要內容:開發一個實用型的計算器程序,實現基本的計算功能同時并進行相應的功能拓展,使其具更加人性化的功能。我們可以用其進行相應的計算功能來方便我們的學習,代替我們進行一…

mybatis配置insert/update/delete同一個模板

insert,update,delete標簽只是一個模板,在操作時是以sql語句為核心的, 即在做增/刪/改時,insert/update/delete便簽可以通用, 但做查詢時只能用 select 標簽 提倡什么操作就用什么標簽 這就是為什么 ex…

Mybatis配置文件resultMap映射啥時候可寫可不寫?

1、student實體類 public class Student {private Integer id;//編號private String name;//姓名private Double sal;//薪水public Student(){}public Student(Integer id, String name, Double sal) {this.id id;this.name name;this.sal sal;}public Integer getId() {ret…

arithmetic java_Java:Arithmetic

好吧,事實上你有方法設置變量叫get - 這顯然不是一個好主意,并且沒有縮進......但它應該有效。但是,你還沒有展示出你是如何使用它的。也許你實際上并沒有被稱為setter方法?以下是相同代碼但具有不同名稱的示例,以及使…

網絡框架 Retrofit(三)

簡單實現Retrofit(替代Okhttp) 1.定義注解參數 Documented Target(PARAMETER) Retention(RUNTIME) public interface Field {String value(); } 復制代碼Documented Target(METHOD) Retention(RUNTIME) public interface Get {String value() default &q…

Tomcat提示“XDB 的服務器 localhost 要求用戶名和密碼”

在地址欄輸入http://localhost:8080/(8080是TOMCAT的端口號)測試,系統提示“XDB 的服務器 localhost 要求用戶名和密碼”,并彈出輸入用戶、密碼的窗口,查看代碼沒問題,不解,上網上查資料,是因為…

java jqgrid json格式_jqGrid 數據之 Json

Json數據需要定義jsonReader來跟服務器端返回的數據做對應,其默認值: jsonReader : { root: "rows", page: "page", total: "total", records: "records", repeatitems: true, c…

django 中靜態文件項目加載問題

問題描述: django項目中創建了多個app后,每個app中都有對應的static靜態文件。整個項目運行時這些靜態文件的加載就是一個問題,因為整個項目我只參與了一部分,項目部署之類的并沒有參與。我寫的部分的js代碼遇到點問題&#xff0c…

Erlang/OTP設計原則(文檔翻譯)

http://erlang.org/doc/design_principles/des_princ.html 圖和代碼皆源自以上鏈接中Erlang官方文檔,翻譯時的版本為20.1。 這個設計原則,其實是說用戶在設計系統的時候應遵循的標準和規范。閱讀前我一直以為寫的是作者在設計 Erlang/OTP 框架時的一些原…

存儲過程的參數可以使用sql的函數

系統已做成存儲過程,調用方法如下: crh_entry(yyyymmdd,起始時間,結束時間); 示例1:進行2016年4月10日10時到12時的測試,應寫為: exec crh_entry(20160410,10,11); 示例2:進行2016年4月8日14時到15時的…