最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot如何獲取Kafka的Topic列表

 更新時間:2022年09月29日 16:04:21   作者:AnthonyJing  
這篇文章主要介紹了SpringBoot如何獲取Kafka的Topic列表問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

寫在前面   

眾所周知,kafka是現(xiàn)代流行的消息隊列,它使用經(jīng)典的消息訂閱發(fā)布模式實現(xiàn)消息的流轉,大部分代碼結合kafka使用都是使用它的生產(chǎn)者和消費者來實現(xiàn)消息的傳遞,那么對于kafka的主題的管理怎么使用代碼實現(xiàn)呢,這是今天要講的主題 

命令行模式

kafka要結合zookeeper使用,因為它把元數(shù)據(jù)信息交給了zookeeper管理,其實使用命令行命令很容易就能對topic進行管理,主要使用的命令是kafka-topics.sh

創(chuàng)建主題
kafka-topics.sh --zookeeper localhost:2181 --create --topic my-topic --replication-factor 3 --partitions 3
查看主題列表
kafka-topics.sh --zookeeper localhost:2181 --list
查看主題狀態(tài)
kafka-topics.sh --describe ?--zookeeper 127.0.0.1:2181 --topic TestTopic?

代碼模式

那么話說回來如何使用代碼實現(xiàn)topic的管理呢,那么現(xiàn)在就來看一下代碼的實現(xiàn)方式,此處使用springboot2框架實現(xiàn)。

首先引進依賴kafka的相關

<dependency>
? ? <groupId>org.springframework.kafka</groupId>
?? ?<artifactId>spring-kafka</artifactId>
</dependency>

創(chuàng)建一個測試類進行測試

public static void main(String[] args) {
? ? ? ? Properties properties = ?new Properties();
? ? ? ? properties.put("bootstrap.servers", "10.0.59.11:9093");
? ? ? ? properties.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");
? ? ? ? properties.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");
? ? ? ? AdminClient adminClient = AdminClient.create(properties);
? ? ? ? ListTopicsResult result = adminClient.listTopics();
? ? ? ? KafkaFuture<Set<String>> names = result.names();
? ? ? ? try {
? ? ? ? ? ? names.get().forEach((k)->{
? ? ? ? ? ? ? ? System.out.println(k);
? ? ? ? ? ? });
? ? ? ? } catch (InterruptedException | ExecutionException e) {
? ? ? ? ? ? e.printStackTrace();
? ? ? ? }
? ? ? ? adminClient.close();
? ? }

這里面最主要的就是AdminClient這個類,AdminClient實現(xiàn)了Admin接口,Admin里面定義了許多和kafka配置相關的東西

讓我們依次來看一下

public abstract class AdminClient implements Admin {
? ? public AdminClient() {
? ? }

? ? public static AdminClient create(Properties props) {
? ? ? ? return (AdminClient)Admin.create(props);
? ? }

? ? public static AdminClient create(Map<String, Object> conf) {
? ? ? ? return (AdminClient)Admin.create(conf);
? ? }
}

而Admin接口里有以下方法

static Admin create(Properties props) {
? ? ? ? return KafkaAdminClient.createInternal(new AdminClientConfig(props, true), (TimeoutProcessorFactory)null);
? ? }

? ? static Admin create(Map<String, Object> conf) {
? ? ? ? return KafkaAdminClient.createInternal(new AdminClientConfig(conf, true), (TimeoutProcessorFactory)null);
? ? }

? ? default void close() {
? ? ? ? this.close(9223372036854775807L, TimeUnit.MILLISECONDS);
? ? }

? ? /** @deprecated */
? ? @Deprecated
? ? default void close(long duration, TimeUnit unit) {
? ? ? ? this.close(Duration.ofMillis(unit.toMillis(duration)));
? ? }

? ? void close(Duration var1);

? ? default CreateTopicsResult createTopics(Collection<NewTopic> newTopics) {
? ? ? ? return this.createTopics(newTopics, new CreateTopicsOptions());
? ? }

? ? CreateTopicsResult createTopics(Collection<NewTopic> var1, CreateTopicsOptions var2);

? ? default DeleteTopicsResult deleteTopics(Collection<String> topics) {
? ? ? ? return this.deleteTopics(topics, new DeleteTopicsOptions());
? ? }

? ? DeleteTopicsResult deleteTopics(Collection<String> var1, DeleteTopicsOptions var2);

? ? default ListTopicsResult listTopics() {
? ? ? ? return this.listTopics(new ListTopicsOptions());
? ? }

? ? ListTopicsResult listTopics(ListTopicsOptions var1);

? ? default DescribeTopicsResult describeTopics(Collection<String> topicNames) {
? ? ? ? return this.describeTopics(topicNames, new DescribeTopicsOptions());
? ? }

? ? DescribeTopicsResult describeTopics(Collection<String> var1, DescribeTopicsOptions var2);

? ? default DescribeClusterResult describeCluster() {
? ? ? ? return this.describeCluster(new DescribeClusterOptions());
? ? }

? ? DescribeClusterResult describeCluster(DescribeClusterOptions var1);

? ? default DescribeAclsResult describeAcls(AclBindingFilter filter) {
? ? ? ? return this.describeAcls(filter, new DescribeAclsOptions());
? ? }

? ? DescribeAclsResult describeAcls(AclBindingFilter var1, DescribeAclsOptions var2);

通過名稱我們可以看出,里面有創(chuàng)建Topic,有刪除Topic,有列出所有Topic,有描述Topic

我們通過這些方法可以管理Kafka的Topic

最后我們來看一下實現(xiàn)效果 

控制臺打印里面有3個Topic

去服務器命令行驗證一下

也是3個說明代碼沒問題

總結

網(wǎng)上大多數(shù)關于kafka的代碼實現(xiàn)都是關于生產(chǎn)者和消費者的實現(xiàn),今天主要是使用一下kakfa的配置管理類,實現(xiàn)對topic的管理,以此記錄作為以后工作中的參考。希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • Java創(chuàng)建線程的五種寫法總結

    Java創(chuàng)建線程的五種寫法總結

    本文主要為大家詳細介紹一下Java實現(xiàn)線程創(chuàng)建的五種寫法,文中的示例代碼講解詳細,對我們學習有一定的幫助,感興趣的可以跟隨小編學習一下
    2022-08-08
  • 帶你走進Maven的大門-最全Maven配置及集成idea工具總結

    帶你走進Maven的大門-最全Maven配置及集成idea工具總結

    Maven項目對象模型(POM),是一個項目管理工具可以通過一小段描述信息來管理項目的構建,報告和文檔的軟件.那我們想要在IDEA中使用Maven得進行一些配置,接下來我們具體看一下是如何配置使用的,需要的朋友可以參考下
    2021-06-06
  • Mybatis省略@Param注解原理分析

    Mybatis省略@Param注解原理分析

    這篇文章主要介紹了Mybatis省略@Param注解原理分析,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • Java中Array、List、ArrayList的區(qū)別及說明

    Java中Array、List、ArrayList的區(qū)別及說明

    這篇文章主要介紹了Java中Array、List、ArrayList的區(qū)別及說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • Java實現(xiàn)生成pdf并解決表格分割的問題

    Java實現(xiàn)生成pdf并解決表格分割的問題

    這篇文章主要為大家詳細介紹了如何利用Java實現(xiàn)生成pdf,并解決表格分割的問題,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2023-11-11
  • sin(x)如何求解的java代碼實現(xiàn)方法

    sin(x)如何求解的java代碼實現(xiàn)方法

    這篇文章主要為大家介紹了sin(x)如何求解的java代碼實現(xiàn)方法示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-04-04
  • java序列化與ObjectOutputStream和ObjectInputStream的實例詳解

    java序列化與ObjectOutputStream和ObjectInputStream的實例詳解

    這篇文章主要介紹了java序列化與ObjectOutputStream和ObjectInputStream的實例詳解的相關資料,希望通過本文能幫助到大家,需要的朋友可以參考下
    2017-09-09
  • Java中集合List、Set和Map的入門詳細介紹

    Java中集合List、Set和Map的入門詳細介紹

    Java集合主要分為三種類型:Set(集)、List(列表)和Map(映射),下面這篇文章主要給大家介紹了關于Java中集合List、Set和Map的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-01-01
  • SpringBoot?自定義starter?yaml提示失效問題及解決方法

    SpringBoot?自定義starter?yaml提示失效問題及解決方法

    在自定義starter后,必不可少會有properties配置參數(shù)需要指定,而在有時又不知道為什么出現(xiàn)這個問題,這篇文章主要介紹了SpringBoot?自定義starter?yaml提示失效問題,需要的朋友可以參考下
    2022-12-12
  • 如何用ObjectMapper將復雜Map轉換為實體類

    如何用ObjectMapper將復雜Map轉換為實體類

    這篇文章主要介紹了如何用ObjectMapper將復雜Map轉換為實體類的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-08-08

最新評論

蒙自县| 武隆县| 大丰市| 肇庆市| 于都县| 新化县| 平陆县| 莱西市| 特克斯县| 西畴县| 东丽区| 凤阳县| 铜梁县| 三原县| 顺义区| 郸城县| 潞西市| 攀枝花市| 唐山市| 区。| 大丰市| 宁武县| 柏乡县| 汉中市| 西盟| 八宿县| 合江县| 吉安县| 虎林市| 平罗县| 光山县| 汤阴县| 黔江区| 奈曼旗| 湄潭县| 铅山县| 舟曲县| 瑞丽市| 南昌县| 潼关县| 闽侯县|