java - 如何在 apache kafka 中删除主题

标签 java apache-kafka

我需要删除 kafka-0.8.2.2.3 中的一个主题。我已使用以下命令删除主题:

bin/kafka-topics.sh --zookeeper localhost:2181 --delete --topic DummyTopic

命令执行成功,但是当我运行命令列出主题时,我可以看到主题仍然存在并且显示标记为删除

bin/kafka-topics.sh --list --zookeeper localhost:2181
DummyTopic - marked for deletion

当我创建主题 DummyTopic 时,它会输出异常,主题已经存在,下面是堆栈跟踪:

Error while executing topic command Topic "DummyTopic" already exists.
kafka.common.TopicExistsException: Topic "DummyTopic" already exists.
    at kafka.admin.AdminUtils$.createOrUpdateTopicPartitionAssignmentPathInZK(AdminUtils.scala:248)
    at kafka.admin.AdminUtils$.createTopic(AdminUtils.scala:233)
    at kafka.admin.TopicCommand$.createTopic(TopicCommand.scala:92)
    at kafka.admin.TopicCommand$.main(TopicCommand.scala:54)
    at kafka.admin.TopicCommand.main(TopicCommand.scala)

请告诉我如何删除此主题。

最佳答案

从 0.8.2.x 版本开始支持删除主题。您必须首先在所有代理上启用主题删除(将 delete.topic.enable 设置为 true)。

注意:从1.0.x开始,功能稳定,delete.topic.enable默认为true

按照此分步流程手动删除主题

  1. 停止 Kafka 服务器
  2. 使用 删除每个 broker 上的主题目录(在 logs.dirslog.dir 属性中定义) rm -rf 命令
  3. 连接到 Zookeeper 实例:zookeeper-shell.sh host:port
  4. Zookeeper 实例中:
    1. 使用以下命令列出主题:ls/brokers/topics
    2. 使用以下命令从 ZooKeeper 中删除主题文件夹:rmr/brokers/topics/yourtopic
    3. 退出 Zookeeper 实例 (Ctrl+C)
  5. 重启Kafka服务器
  6. 使用该命令确认是否被删除 kafka-topics.sh --list --zookeeper host:port

关于java - 如何在 apache kafka 中删除主题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33537950/

相关文章:

java - 我希望这个音乐文件能够从中断处继续播放音乐

java - 无法在屏幕旋转时保留菜单项

apache-kafka - 过期的 Apache Kafka 消息没有被删除

java - 创建 Kafka Producer 并调用方法 send()、flush() 和 close() 的正确顺序是什么?

java - 如何关闭 Apache Kafka 连接器任务?

java - 将依赖项添加到 jar 类路径 list

Java计算字符串字符个数的方法

java - Android在底部导航栏中禁用缩放效果

apache-kafka - 是否可以使用MirrorMaker2复制没有别名前缀的kafka主题

docker - 如何将LinkedIn的Burrow添加到Docker Compose?