1. package com.example.demo.topic;
  2.  
  3. import kafka.admin.AdminUtils;
  4. import kafka.admin.RackAwareMode;
  5. import kafka.server.ConfigType;
  6. import kafka.utils.ZkUtils;
  7. import org.apache.kafka.common.requests.MetadataResponse;
  8. import org.apache.kafka.common.security.JaasUtils;
  9. import scala.collection.JavaConversions;
  10.  
  11. import java.util.List;
  12. import java.util.Map;
  13. import java.util.Properties;
  14.  
  15. public class KafkaTopic {
  16. public static void main(String[] args) {
  17. //createTopic();
  18. //deleteTopic();
  19. //listAllTopic();
  20. // getTopic();
  21. listTopicAllConfig();
  22. }
  23.  
  24. /**
  25. * 创建主题
  26. * kafka-topics.sh --zookeeper localhost:2181 --create --topic kafka-action --replication-factor 2 --partitions 3
  27. */
  28. private static void createTopic() {
  29. ZkUtils zkUtils = ZkUtils.apply("47.52.199.51:2181", 30000, 30000, JaasUtils.isZkSecurityEnabled());
  30. // 创建一个单分区单副本名为t1的topic
  31. AdminUtils.createTopic(zkUtils, "topic-20", 3, 1, new Properties(), RackAwareMode.Enforced$.MODULE$);
  32. zkUtils.close();
  33. }
  34.  
  35. /**
  36. * 除某主题
  37. * kafka-topics.sh --zookeeper localhost:2181 --topic kafka-action --delete
  38. */
  39. private static void deleteTopic() {
  40. ZkUtils zkUtils = ZkUtils.apply("47.52.199.51:2181", 30000, 30000, JaasUtils.isZkSecurityEnabled());
  41. // 删除topic 't1'
  42. AdminUtils.deleteTopic(zkUtils, "topic-19");
  43. zkUtils.close();
  44. }
  45.  
  46. /**
  47. * 修改主题配置 kafka-config --zookeeper localhost:2181 --entity-type topics --entity-name kafka-action
    * --alter --add-config max.message.bytes=202480 --alter --delete-config flush.messages
  48. */
  49. private static void updateTopic() {
  50. ZkUtils zkUtils = ZkUtils.apply("47.52.199.51:2181", 30000, 30000, JaasUtils.isZkSecurityEnabled());
  51. Properties props = AdminUtils.fetchEntityConfig(zkUtils, ConfigType.Topic(), "topic-19");
  52. // 增加topic级别属性
  53. props.put("min.cleanable.dirty.ratio", "0.3");
  54. // 删除topic级别属性
  55. props.remove("max.message.bytes");
  56. // 修改topic 'test'的属性
  57. AdminUtils.changeTopicConfig(zkUtils, "test", props);
  58. zkUtils.close();
  59. }
  60.  
  61. /**
  62. *
  63. * 查看所有主题 kafka-topics.sh --zookeeper localhost:2181 --list
  64. */
  65. public static void listAllTopic() {
  66. ZkUtils zkUtils = null;
  67. try {
  68. zkUtils = ZkUtils.apply("47.52.199.51:2181", 30000, 30000, JaasUtils.isZkSecurityEnabled());
  69. List<String> topics = JavaConversions.seqAsJavaList(zkUtils.getAllTopics());
  70. topics.forEach(System.out::println);
  71. } catch (Exception e) {
  72. e.printStackTrace();
  73. } finally {
  74. if (zkUtils != null) {
  75. zkUtils.close();
  76. }
  77. }
  78. }
  79.  
  80. /**
  81. * 得到所有topic的配置信息 kafka-configs.sh --zookeeper localhost:2181 --entity-type topics --describe
  82. */
  83. public static void listTopicAllConfig() {
  84. ZkUtils zkUtils = null;
  85. try {
  86. zkUtils = ZkUtils.apply("47.52.199.51:2181", 30000, 30000, JaasUtils.isZkSecurityEnabled());
  87. Map<String, Properties> configs = JavaConversions.mapAsJavaMap(AdminUtils.fetchAllTopicConfigs(zkUtils));
  88. // 获取特定topic的元数据
  89. MetadataResponse.TopicMetadata topicMetadata = AdminUtils.fetchTopicMetadataFromZk("topic-19",zkUtils);
  90. // 获取特定topic的配置信息
  91. Properties properties = AdminUtils.fetchEntityConfig(zkUtils,"topics","kafka-test");
  92. for (Map.Entry<String, Properties> entry : configs.entrySet()) {
  93. System.out.println("key=" + entry.getKey() + " ;value= " + entry.getValue());
  94. }
  95. } catch (Exception e) {
  96. e.printStackTrace();
  97. } finally {
  98. if (zkUtils != null) {
  99. zkUtils.close();
  100. }
  101. }
  102. }
  103. }

kafka系列六、java管理kafka Topic的更多相关文章

  1. Kafka系列三 java API操作

    使用java API操作kafka 1.pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xs ...

  2. Apache Kafka系列(三) Java API使用

    Apache Kafka系列(一) 起步 Apache Kafka系列(二) 命令行工具(CLI) Apache Kafka系列(三) Java API使用 摘要: Apache Kafka Java ...

  3. Apache Kafka系列(六)客制化Serializer和Deserializer

    已经迁移,请移步:http://www.itrensheng.com/archives/apache-kafka-repartition

  4. Kafka 系列(四)—— Kafka 消费者详解

    一.消费者和消费者群组 在 Kafka 中,消费者通常是消费者群组的一部分,多个消费者群组共同读取同一个主题时,彼此之间互不影响.Kafka 之所以要引入消费者群组这个概念是因为 Kafka 消费者经 ...

  5. Kafka 系列(一)—— Kafka 简介

    一.简介 ApacheKafka 是一个分布式的流处理平台.它具有以下特点: 支持消息的发布和订阅,类似于 RabbtMQ.ActiveMQ 等消息队列: 支持数据实时处理: 能保证消息的可靠性投递: ...

  6. Kafka 系列(三)—— Kafka 生产者详解

    一.生产者发送消息的过程 首先介绍一下 Kafka 生产者发送消息的过程: Kafka 会将发送消息包装为 ProducerRecord 对象, ProducerRecord 对象包含了目标主题和要发 ...

  7. Kafka笔记8(管理Kafka)

    使用kafka-topic.sh工具可以执行大部分操作   创建/修改/删除/查看集群里的主题.要使用全部功能,需要通过--zookeeper参数提供zookeerper连接字符串 创建主题: 创建主 ...

  8. jvm系列(六):Java服务GC参数调优案例

    本文介绍了一次生产环境的JVM GC相关参数的调优过程,通过参数的调整避免了GC卡顿对JAVA服务成功率的影响. 这段时间在整理jvm系列的文章,无意中发现本文,作者思路清晰通过步步分析最终解决问题. ...

  9. java并发系列(六)-----Java并发:volatile关键字解析

    在 Java 并发编程中,要想使并发程序能够正确地执行,必须要保证三条原则,即:原子性.可见性和有序性.只要有一条原则没有被保证,就有可能会导致程序运行不正确.volatile关键字 被用来保证可见性 ...

随机推荐

  1. 洛谷 P1582 倒水 解题报告

    P1582 倒水 题目描述 一天,CC买了N个容量可以认为是无限大的瓶子,开始时每个瓶子里有1升水.接着~~CC发现瓶子实在太多了,于是他决定保留不超过K个瓶子.每次他选择两个当前含水量相同的瓶子,把 ...

  2. 【原创】py3+requests+json+xlwt,爬取拉勾招聘信息

    在拉勾搜索职位时,通过谷歌F12抓取请求信息 发现请求是一个post请求,参数为: 返回的是json数据 有了上面的基础,我们就可以构造请求了 然后对获取到的响应反序列化,这样就获取到了json格式的 ...

  3. bzoj4504 K个串 (优先队列+主席树)

    首先如果没有出现次数的限制的话,这题就是超级钢琴 但由于有了这个限制,不能简单地用前缀和 考虑顺着做的时候每个点的贡献,如果a[i]=x,x上次出现位置是lst[x](可以用一个map来记),那它会给 ...

  4. IDEA集成有道翻译插件/maven帮助插件/mybatis插件

    (一)IDEA集成有道翻译插件:https://www.cnblogs.com/a8457013/p/7814335.html 插件下载地址:http://plugins.jetbrains.com/ ...

  5. Python数据挖掘课程

    [Python数据挖掘课程]一.安装Python及爬虫入门介绍[Python数据挖掘课程]二.Kmeans聚类数据分析及Anaconda介绍[Python数据挖掘课程]三.Kmeans聚类代码实现.作 ...

  6. mysql 日志清理

    1.查看binlog日志 show binary logs; 2.删除某个日志文件之前的所有日志文件purge binary logs to 'bin.000106'; 3.再看show binary ...

  7. Service Fabric基本概念: Node, Application, Service, Partition/Replicas

    作者:张鼎松 (Dingsong Zhang) @ Microsoft 在上一节中,为大家简明扼要的介绍了微软针对现代分布式系统在Azure上实现的相关服务组件.紧接上文内容,本节将为大家介绍Azur ...

  8. java基础-Idea开发工具介绍

    java基础-Idea开发工具介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 之前给大家介绍过一款Java的IDE叫eclipse,有些功能用起来不是很得心应手,尤其是在导报的 ...

  9. 函数和常用模块【day04】:函数介绍(一)

    本节内容 1.函数介绍 2.函数定义 3.为什么要使用函数 一.介绍 在我们以往的学习编程的过程当中,碰到的最多的两张编程方式或者说编程方法:面向过程和面向对象.其实不管是哪一种,其实都是编程的方法论 ...

  10. Java语法总结--Java集合类

    这一节我们来总结一下Java集合类. Java集合总结 继承与Collection接口的–List接口 List接口本身的特点 常见的继承List接口的实用类 实用类对比 继承与Collection接 ...