Kafka客户端API类型
AdminClient API:允许管理和检测Topic、broker以及其他kafka对象
ProducerAPI:发布消息到一个或多个topic
Consumer API:订阅一个或多个topic,并处理产生的消息
Streams API: 高效地将输入流转换到输出流
Connectors API: 从一些源系统或应用程序中拉取数据到Kafka
AdminClient API demo
<dependency>
<groupId>org.apache.kafka</groupId>
<artifactId>kafka-clients</artifactId>
<version>2.4.0</version>
</dependency>
/**
*
* 设置AdminClient
* @return
*/
public static AdminClient adminClient(){
//配置参数
Properties properties = new Properties();
properties.setProperty(AdminClientConfig.BOOTSTRAP_SERVERS_CONFIG,"192.168.75.128:9092");
AdminClient adminClient = AdminClient.create(properties);
return adminClient;
}
创建成功
/**
* 创建topic实例
*/
public static void createTopic(){
AdminClient adminClient = adminClient();
//副本因子
Short rs = 1;
NewTopic newTopic = new NewTopic(TOPIC_NAME,1,rs);
CreateTopicsResult topics = adminClient.createTopics(Arrays.asList(newTopic));
System.out.println("CreateTopicResult:"+ topics);
}
/**
* 删除topic
* @throws ExecutionException
* @throws InterruptedException
*/
public static void delTopics() throws ExecutionException, InterruptedException {
AdminClient adminClient = adminClient();
DeleteTopicsResult deleteTopicsResult = adminClient.deleteTopics(Arrays.asList(TOPIC_NAME));
deleteTopicsResult.all().get();
}
/**
* 描述Topic
* name:csx_topic,desc:(name=csx_topic, internal=false,
* partitions=
* (partition=0, leader=192.168.75.128:9092 (id: 0 rack: null), replicas=192.168.75.128:9092 (id: 0 rack: null), isr=192.168.75.128:9092 (id: 0 rack: null)), authorizedOperations=[])
*/
public static void describeTopics() throws ExecutionException, InterruptedException {
AdminClient adminClient = adminClient();
DescribeTopicsResult describeTopicsResult = adminClient.describeTopics(Arrays.asList(TOPIC_NAME));
Map<String, TopicDescription> stringTopicDescriptionMap = describeTopicsResult.all().get();
Set<Map.Entry<String,TopicDescription>> entries = stringTopicDescriptionMap.entrySet();
entries.stream().forEach((entry) ->{
System.out.println("name:" + entry.getKey() + ",desc:" + entry.getValue());
});
}