作者简介:大家好,我是码炫码哥,前中兴通讯、美团架构师,现任某互联网公司CTO,兼职码炫课堂主讲源码系列专题
代表作:《jdk源码&多线程&高并发》,《深入tomcat源码解析》,《深入netty源码解析》,《深入dubbo源码解析》,《深入springboot源码解析》,《深入spring源码解析》,《深入redis源码解析》等
联系qq:184480602,加我进群,大家一起学习,一起进步,一起对抗互联网寒冬。码炫课堂的个人空间-码炫码哥个人主页-面试,源码等
释放21集全网最深ConcurrentHashMap的vip视频,复现每一行源码
AdminClient
自0.ll.0.0版本起,Kafka社区推出了AdminClient和KafkaAdminClient,意在统一所有的集群管理API。使用0.11.0.0及以后版本的用户应该始终使用这个类来管理集群。
虽然和原先服务器端的AdminClient类同名,但这个工具是属于客户端的,因此只需要在管理程序项目中添加kafka clients依赖即可:
<dependency>
<groupId>org.apache.kafka</groupId>
<artifactId>kafka-clients</artifactId>
<version>2.3.0</version>
</dependency>
| 方法名称 | 作用 |
|---|---|
| createTopics | 创建一个或多个Topic |
| listTopics | 查询Topic列表 |
| deleteTopics | 删除一个或多个Topic |
| describeTopics | 查询Topic的描述信息 |
| describeConfigs | 查询Topic、Broker等的所有配置项信息 |
| alterConfigs | 用于修改Topic、Broker等的配置项信息(该方法在新版本中被标记为已过期) |
| incrementalAlterConfigs | 同样也是用于修改Topic、Broker等的配置项信息,但功能更多、更灵活,用于代替alterConfigs |
| createPartitions | 用于调整Topic的Partition数量,只能增加不能减少或删除,也就是说新设置的Partition数量必须大于等于之前的Partition数量 |
1、创建AdminClient
public static void main(String[] args) {
Properties properties = new Properties();
properties.put(AdminClientConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9092");
AdminClient adminClient = AdminClient.create(properties);
adminClient.close();
}
2、获取集群信息
/**
* 获取Kafka集群信息
* @param adminClient
* @throws ExecutionException
* @throws InterruptedException
*/
public static void describeCluster(AdminClient adminClient) throws ExecutionException, InterruptedException {
DescribeClusterResult ret = adminClient.describeCluster();
System.out.println(String.format("Cluster id: %s, controller: %s",
ret.clusterId().get(), ret.controller().get()));
System.out.println("Current cluster nodes info: ");
for (Node node : ret.nodes().get()) {
System.out.println(node);
}
}
Cluster id: z-FbYLVTSqK-6TCv0osH3Q, controller: localhost:9092 (id: 0 rack: null)
Current cluster nodes info:
localhost:9092 (id: 0 rack: null)
3、创建topic
/**
* 创建一个分区数量为3,副本数量为1的主题
* @param adminClient
* @param topicName
* @throws ExecutionException
* @throws InterruptedException
*/
public static void createTopics(AdminClient adminClient, String topicName) throws ExecutionException, InterruptedException {
NewTopic newTopic = new NewTopic(topicName, 3, (short)1);
CreateTopicsResult ret = adminClient.createTopics(Arrays.asList(newTopic));
ret.all().get();
}
4、查看topic列表
/**
* 列出所有topic
* @param adminClient
* @throws ExecutionException
* @throws InterruptedException
*/
public static void listAllTopics(AdminClient adminClient) throws ExecutionException, InterruptedException {
//可配置选项
ListTopicsOptions options = new ListTopicsOptions();
//是否列出内部使用的topics
Kafka AdminClient API使用详解

最低0.47元/天 解锁文章
628

被折叠的 条评论
为什么被折叠?



