記錄:460
場(chǎng)景:在Spring Boot微服務(wù)集成Kafka客戶端kafka-clients-3.0.0操作Kafka的Topic的創(chuàng)建和刪除。
版本:JDK 1.8,Spring?Boot 2.6.3,kafka_2.12-2.8.0,kafka-clients-3.0.0。
Kafka安裝:https://blog.csdn.net/zhangbeizhen18/article/details/129071395
1.微服務(wù)中配置Kafka信息
1.1在pom.xml添加依賴
pom.xml文件:
<dependency>
<groupId>org.apache.kafka</groupId>
<artifactId>kafka-clients</artifactId>
<version>3.0.0</version>
</dependency>
解析:使用原生的kafka-clients,版本:3.0.0。操作kafka的生產(chǎn)者、消費(fèi)、Topic。
2.使用AdminClient創(chuàng)建Kafka的Topic
AdminClient全稱:org.apache.kafka.clients.admin.AdminClient
(1)示例代碼
@RestController
@RequestMapping("/hub/example/topic")
@Slf4j
public class UseKafkaTopicController {
private String topicName = "hub-topic-city-02";
@GetMapping("/f01_1")
public Object f01_1() {
try {
//1.獲取Kafka配置信息
Map<String, Object> configs = new HashMap<>();
configs.put("bootstrap.servers", "192.168.19.203:29001");
//2.創(chuàng)建客戶端AdminClient
AdminClient adminClient = KafkaAdminClient.create(configs);
//3.獲取Topic清單
Set<String> topicSet = adminClient.listTopics().names().get();
log.info("在Kafka已建Topic數(shù)量: {} ,清單:", topicSet.size());
topicSet.forEach(System.out::println);
//4.創(chuàng)建Topic
if (!topicSet.contains(topicName)) {
log.info("新建Topic: {}", topicName);
// Topic名稱,分區(qū)Partition數(shù)目,復(fù)制因子(replication Factor)
NewTopic newTopic = new NewTopic(topicName, 1, (short) 1);
Collection<NewTopic> newTopics = Lists.newArrayList(newTopic);
adminClient.createTopics(newTopics);
}
} catch (Exception e) {
log.info("創(chuàng)建Topic異常.");
e.printStackTrace();
}
return "創(chuàng)建成功";
}
}
(2)解析代碼
操作Kafka的Topic需要先創(chuàng)建AdminClient,使用AdminClient的API創(chuàng)建Topic。
創(chuàng)建Topic一般只需指定Topic名稱,分區(qū)Partition數(shù)目,復(fù)制因子(replication Factor)就行。
3.使用AdminClient刪除Kafka的Topic
AdminClient全稱:org.apache.kafka.clients.admin.AdminClient
(1)示例代碼
@RestController
@RequestMapping("/hub/example/topic")
@Slf4j
public class UseKafkaTopicController {
private String topicName = "hub-topic-city-02";
@GetMapping("/f01_2")
public Object f01_2() {
try {
//1.獲取Kafka配置信息
Map<String, Object> configs = new HashMap<>();
configs.put("bootstrap.servers", "192.168.19.203:29001");
//2.創(chuàng)建客戶端AdminClient
AdminClient adminClient = KafkaAdminClient.create(configs);
//3.獲取Topic清單
Set<String> topicSet = adminClient.listTopics().names().get();
//4.刪除Topic
if (topicSet.contains(topicName)) {
log.info("刪除Topic: {}", topicName);
Collection<String> topics = Lists.newArrayList(topicName);
DeleteTopicsResult deleteTopicsResult = adminClient.deleteTopics(topics);
deleteTopicsResult.all().get();
}
} catch (Exception e) {
log.info("刪除Topic異常.");
e.printStackTrace();
}
return "刪除成功";
}
}
(2)解析代碼
操作Kafka的Topic需要先創(chuàng)建AdminClient,使用AdminClient的API刪除Topic。
創(chuàng)建Topic一般只需指定Topic名稱就行。
4.測(cè)試
創(chuàng)建請(qǐng)求RUL:http://127.0.0.1:18209/hub-209-kafka/hub/example/topic/f01_1
刪除請(qǐng)求RUL:http://127.0.0.1:18209/hub-209-kafka/hub/example/topic/f01_2
以上,感謝。文章來源:http://www.zghlxwxcb.cn/news/detail-488923.html
2023年6月17日文章來源地址http://www.zghlxwxcb.cn/news/detail-488923.html
到了這里,關(guān)于使用Kafka客戶端(kafka-clients)的Java API操作Kafka的Topic的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!