apache-kafka Apache·Kafka:批量删除主题

goucqfw6  于 2022-11-01  发布在  Apache
关注(0)|答案(2)|浏览(213)

我们有一个设想,如果我们需要删除多个集群中的Kafka主题,每个集群中的主题数大于1 k。如何从CLI执行此操作?我知道我们可以使用逗号分隔的主题名称和--delete --topic <topic1>,<topic2>,...,但是我们在客户已共享的文件中有这些主题名称。我们是否可以执行某种循环,并在cli命令/脚本中逐个删除它们?在一开始它似乎很微不足道;然而我不能得出任何明确的策略来做这件事。有人能请帮助一些伪代码或工作的一个会更好。

3b6akqbq

3b6akqbq1#

不可以,CLI不接受列表。
所以是的,写一个简单的bash或者AWK script(或者你选择的编程语言)来循环这个文件。或者在链接的帖子中提到,用Kafka提供程序把你的文件转换成Terraform HCL定义,然后你就可以terraform destroy

bnlyeluc

bnlyeluc2#

在此张贴我的脚本;我希望这能帮助到其他人


# !/bin/bash

raw_file=$1 
sed -i '/^$/d' ${raw_file}
count=1
while read topics; do
    # reading each line    
    echo "`date +%c`"
    echo "#${count}:Deleting Topic:${topics}"
    ./kafka-topics.sh --bootstrap <HostName>:<Port> --delete --topic $topics
    status=$?
    [ $status -eq 0 ] && echo "${topics}:SUCCESS"|tee -a ${raw_file}-status || echo "${topics}:FAILURE"|tee -a ${raw_file}-status
    echo "========================================================================="
    count=$[$count+1]
done < ${raw_file}

在某些情况下,当经纪人由于某种原因而无法提供,我们也可以从Zookeeper那里做。

kafka-topics.sh --zookeeper <hostName>:<port> --delete --topic $topics

这将不会立即删除它,但标记为删除,然后当代理领导者与Zookeeper连接时,它将复制元数据,然后实际删除主题。

相关问题