首页 > 解决方案 > 如何从 cli 中删除 Kafka 主题?

问题描述

$ 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.enableserver.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实际删除一个主题?

标签: apache-kafka

解决方案


在同事的建议下,我

  • 关闭 Kafka 和 Zookeeper
  • 将行添加listeners=PLAINTEXT://127.0.0.1:9092/usr/local/etc/kafka/server.properties
  • 重启 Zookeeper 和 Kafka

现在我可以再次删除主题。我不知道为什么这会起作用,但怀疑它与最近的 macOS 升级有关。


推荐阅读