删除不适用于kafka java客户端2.1.0的主题

删除不适用于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> 删除主题的

我想通过编程删除一个卡夫卡主题,并努力使其生效。我使用下面的maven依赖项

  <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

     }
 }