删除不适用于kafka java客户端2.1.0的主题
我想通过编程删除一个卡夫卡主题,并努力使其生效。我使用下面的maven依赖项删除不适用于kafka java客户端2.1.0的主题,java,apache-kafka,Java,Apache Kafka,我想通过编程删除一个卡夫卡主题,并努力使其生效。我使用下面的maven依赖项 <dependency> <groupId>org.apache.kafka</groupId> <artifactId>kafka-clients</artifactId> <version>2.1.0</version> </dependency> 删除主题的
<dependency>
<groupId>org.apache.kafka</groupId>
<artifactId>kafka-clients</artifactId>
<version>2.1.0</version>
</dependency>
删除主题的代码:
public void deleteTopic(final String... topicNames) {
admin.deleteTopics(Arrays.asList(topicNames));
log.info("Topics '{}' deleted.", topicNames);
}
我在server.properties for kafka中有delete.topic.enable=true
属性。也不例外。不知道为什么它不起作用。感谢您的帮助 - 确保制作人没有使用该主题
- 由于deleteTopics()方法返回一个future,所以请等待future任务完成(如果您使用的是按需任务,因为如果我们不手动执行,主线程将不会等待future完成)
public void deleteKafkaTopics(列出kafkaTopics){ DeleteTopicsResult DeleteTopicsResult=kafkaAdminClient.deleteTopics(kafkaTopics); 而(!deleteTopicsResult.all().isDone()){ //等待将来的任务完成 } }
注意:如果您使用的是windows机器,您可能会面临AccessDeniedException。卡夫卡发行版(Iam使用卡夫卡2.1)中已经打开了该修复程序的票证。因此我更喜欢使用Linux机器,它可以很好地与卡夫卡配合使用。另外,不要忘记在Kafka brokers的config/server.properties中设置
delete.topic.enable=true
。对于较新版本的卡夫卡,默认情况下它处于启用状态。如果制作人正在为该主题启动并运行,则您尝试删除的主题仍将存在。你能检查一下这个案例并更新一下吗?我不知道该如何感谢你。现在可以用了。:)
public void deleteTopic(final String... topicNames) {
admin.deleteTopics(Arrays.asList(topicNames));
log.info("Topics '{}' deleted.", topicNames);
}
public void deleteKafkaTopics(List<String> kafkaTopics) {
DeleteTopicsResult deleteTopicsResult = kafkaAdminClient.deleteTopics(kafkaTopics);
while (!deleteTopicsResult.all().isDone()) {
// Wait for future task to complete
}
}