在运营环境中,删除kafka topic的方法,没有必要当然不要这么干,迫不得已才会去删除topic。
首先配置文件server.properties 增加参数 delete.topic.enable=true。
其次呢,使用删除命令行:
./bin/kafka-topics.sh –delete –topic THIS_IS_MY_TOPIC –zookeeper localhost:2181
*红色字体需要替换。
或者使用kafka-manager集群管理工具删除。
如果删除之前,没有配置 delete.topic.enable=true 参数,那么topic只会标记为marked for deletion ,也就是说,只是标记并没有删除;
此时只要加上配置项,然后重启kafka就可以真正删除该topic。
如果重启还是没有被删除,那么就使用zookeeper的命令删除试试;
输入工具行命令: ./zookeeper-3.4.10/bin/zkCli.sh
此时进入了一个shell中端。
执行:ls /brokers/topics 命令可以查看当前brokers下所有topics。
然后执行: rmr /brokers/topics/[topic name] 删除指定的topic,但是可能会提示:
The command ‘rmr’ has been deprecated. Please use ‘deleteall’ instead.
只要把rmr换成deleteall就可以了,如:
deleteall /brokers/topics/[topic name]
再次使用ls /brokers/topics 命令查看topics,如果发现你要删除的topic还在,
执行:ls /admin/delete_topics 这里会显示出你刚刚要删除的topic,然后执行:deleteall /admin/delete_topics/[topic name] 就可以完全删除了。
总结一下:
1.执行:
./bin/kafka-topics.sh –delete –topic THIS_IS_MY_TOPIC –zookeeper localhost:2181
2.如果没有删除:
配置文件server.properties 增加参数 delete.topic.enable=true
3.重启kafka
4.还是没有删除:
执行:./zookeeper-3.4.10/bin/zkCli.sh
执行:ls /brokers/topics 命令可以查看当前brokers下所有topics
执行:deleteall /brokers/topics/[topic name]
5.再次使用ls /brokers/topics 命令查看topics,如果发现你要删除的topic还在
执行:ls /admin/delete_topics
执行:deleteall /admin/delete_topics/[topic name]
结束完成。比较麻烦,但是有效解决在kafka使用过程中如果有需要删除topic而又删除失败。