I am looking for a way to delete a topic or all its messages using kafkacat.
Is it possible or the only way is through the script listed here?
bin/kafka-topics.sh --zookeeper localhost:2181 --delete --topic mytopic
There is no delete topic feature at this stage in kafkacat according to man page and github source code. So the only way is to use kafka-topics script.
kafkacat is a generic non-JVM producer and consumer for Apache Kafka 0.8, think of it as a netcat for Kafka.
In producer mode ( -P ), kafkacat reads messages from stdin, delimited with a configurable delimeter and produces them to the provided Kafka cluster, topic and partition. In consumer mode ( -C ), kafkacat reads messages from a topic and partition and prints them to stdout using the configured message delimiter. If neither -P or -C are specified kafkacat attempts to figure out the mode automatically based on stdin/stdout tty types. kafkacat also features a metadata list mode ( -L ), to display the current state of the Kafka cluster and its topics and partitions.
As @Naween Banuka pointed out, you can also use zookeeper-shell.sh or zkCli.sh (found under zookeeper/bin) to do this:
List the existing topics : ./zookeeper-shell.sh localhost:2181 ls /brokers/topics
Remove Topic : ./zookeeper-shell.sh localhost:2181 rmr /brokers/topics/yourtopic
Yes, It's possible.
But first, You have to enable topic deletion on all brokers.
change delete.topic.enable to true.
By default, it's false (In server.properties file)
Then, Use topic delete command.
bin/kafka-topics.sh --zookeeper localhost:2181 --delete --topic mytopic
If you want to delete that topic permanently, You can use the zookeeper delete command.
./zookeeper-shell.sh localhost:2181 ls /brokers/topics./zookeeper-shell.sh localhost:2181 rmr /brokers/topics/yourtopic