$ kafka-topics --zookeeper localhost:2181 --list | grep my-topic
my-topic
$ kafka-topics --zookeeper localhost:2181 --delete --topic my-topic
Topic my-topic is marked for deletion.
Note: This will have no impact if delete.topic.enable is not set to true.
$ kafka-topics --zookeeper localhost:2181 --list | grep my-topic
my-topic - marked for deletion
从那时起已经过了几个小时,主题仍然没有被删除。
我已经看到了我应该将delete.topic.enable
放入server.properties
并重新启动kafka的建议。我试过这个。它没有工作。
$ grep -F delete.topic.enable /usr/local/etc/kafka/server.properties
delete.topic.enable = true
(为什么默认情况下不会这样设置?)
无论如何,这些建议全部都是针对kafka 0. *而且我的版本较新。
$ brew list --versions kafka
kafka 1.1.0
如何删除主题?
我可以关闭kafka和zookeeper,运行rm -r /usr/local/var/lib/kafka-logs /usr/local/var/run/zookeeper/data
,然后再次启动zookeeper和kafka。但这是相当激烈的。当然应该有一些方法可以说服kafka-topics
实际删除主题吗?
答案 0 :(得分:1)
您正在使用的命令是删除主题的推荐方法。
不幸的是,有一些原因可能导致某个主题陷入“标记为删除”状态。
如果检查控制器日志,您可能会发现无法删除它的原因。在控制器日志中,删除管理器中的所有行都以Topic Deletion Manager
为前缀。
您应该定期看到Handling deletion for topics ...
等消息。如果控制器已放弃删除,它应该使用以下格式记录它:Halted deletion of topics ...
。
如果要强制删除,可以尝试:
zookeeper-shell.sh
,运行rmr /brokers/topics/TOPIC_NAME
最后,如果这些都不起作用,您可以按照提示删除磁盘上的日志数据/
答案 1 :(得分:1)
根据同事的建议,我
listeners=PLAINTEXT://127.0.0.1:9092
添加到/usr/local/etc/kafka/server.properties
现在我可以再次删除主题。我不知道为什么这应该有效,但怀疑它与最近的macOS升级有关。