当前位置: 首页 > 知识库问答 >
问题:

无法从cmd实用程序中删除Kafka主题并以编程方式删除(Java)

从智志
2023-03-14

我不能删除Kafka的主题,他们只是标记为删除。有什么问题?我是不是漏掉了什么?欢迎提出任何建议。

我尝试用两种方法删除Kafka主题:

kafka-topics.bat --delete --zookeeper localhost:2181 --topic Cat
public void deleteSomeTopic() throws Exception {

  consumer = new SimpleConsumer(host, port, soTimeout,  bufferSize,"deleteClient");

  List<String> listTopics = new ArrayList<>();
  TopicMetadataRequest request = new TopicMetadataRequest(listTopics);

  //consumer will send request and get corresponding response
  TopicMetadataResponse response = consumer.send(request);

  //getting topicMetadata list
  List<TopicMetadata> topicMetadataList = response.topicsMetadata();

  for (TopicMetadata topicMetadata: topicMetadataList) {
     System.out.println("Do you want to delete this Topic: "+ topicMetadata.topic());
     String ch = scanner.next();
     if(ch.equalsIgnoreCase("y"))
        AdminUtils.deleteTopic(zkClient, topicMetadata.topic());
     Thread.sleep(2000);
  }
}
kafka-topics.bat --list -zookeeper localhost:2181
Ape - marked for deletion   
Cat - marked for deletion     
Dog - marked for deletion   
Elephant                    
apple                       
carrot                      
ginger - marked for deletion
guava                       
mango                      
controlled.shutdown.enable=true
delete.topic.enable=true

我使用的是kafka2.10-0.8.2.2,我的pom.xml文件只有两个依赖项。

<dependencies>
    <dependency>
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-streaming_2.10</artifactId>
        <version>1.5.1</version>
    </dependency>
    <dependency>
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-streaming-kafka_2.10</artifactId>
        <version>1.5.1</version>
    </dependency>
</dependencies>

我还检查了tmp/kafka-logs目录,主题目录还在。我需要做什么变通办法吗?

共有1个答案

柯天宇
2023-03-14

根据列表命令的输出,您似乎正确地告诉Kafka您想删除一个主题。出于某种原因,Kafka没有删除它。在版本0.8.2之前的Kafka中有一个错误,它阻止了主题删除。查看该bug请求的注释,您正在运行的0.8.2.2似乎仍然存在一些问题。也许这个bug还没有完全修复?

基于您的Kafka.bat文件,是否在windows环境中运行Kafka?您是否对默认server.properties文件进行了许多更改?或者您基本上使用的是Kafka附带的默认文件?这可能是与Windows相关的问题,我只在Linux上使用过它。使用几乎所有的默认值,只有设置delete.topic.enable=true deletion在Linux上一直对我有效。随机猜测,但也许这不是在Windows环境或。bat文件中修复的?

不过,基于这个堆栈溢出答案和对原始bug报告的注释,似乎存在一个解决方案。我从来没有用过,也许可以试试看?

 类似资料:
  • 按需运行时,我可以以编程方式(使用java)从Kafka Topic创建/删除分区吗? 我正在使用Java Apache Kafka客户端(0.10)和Apache Kafka安装(0.10)

  • 我想删除所有空的Kafka主题(定期从cron)。我在文档中找不到一个这样做的命令?转到脚本: 但是,这包括已经过期的消息?在不使用消费者的情况下,如何在主题中找到实际的当前计数?

  • 在AndroidM中:我使用下面的代码删除当前连接的WIFI AP。 但是总是返回false。 虽然这个API在以前的版本中运行良好。 使用AndroidM中的任何其他API可以在这个平台上实现任何解决方案? 谢谢。

  • 问题内容: 我正在尝试删除路径下的文件 到目前为止,我所做的是: 并且文件仍在其位置(未删除:() 另外,我已在清单文件中授予了权限。 问题答案:

  • 有没有办法在不使用REST操作的情况下从Eureka服务器中删除注册实例?哪个是包含所有应用程序的数据结构? (很明显,我想删除他们在Eureka服务器中编写代码)。

  • 问题内容: 有没有一种方法可以在运行时从家庭启动器中删除活动?我的意思是从其属性或类似的东西删除。 问题答案: 您可以通过禁用组件,将其从启动器中删除。

  • 距今已过去数小时,话题仍未删除。 我看到了一些建议,建议我将放在我的中,然后重新启动Kafka。我试过这个。没奏效。 (为什么默认不设置这个?) 我可以关闭kafka和zookeeper,运行,然后再次启动zookeeper和kafka。但这是相当激烈的。确实应该有一些方法来说服实际上删除一个主题?

  • 但是,这将导致以下消息: 如何删除此主题?