如何使用单个命令在 Apache Kafka 中创建主题列表

Ren*_*hya 2 unix apache-kafka apache-zookeeper

截至目前,我正在使用以下命令一一创建一个主题。

sh ./bin/kafka-topics --create --zookeeper localhost:2181  --topic sdelivery --replication-factor 1 --partitions 1
Run Code Online (Sandbox Code Playgroud)

因为我有 200 多个主题要创建。有没有办法用单个命令创建主题列表?

我正在使用 0.10.2 版本的 Apache Kafka。

cri*_*007 7

您可以使用 TerraformKubernetes Operators,它们不仅可以帮助您创建主题(使用一个命令),而且如果您确实需要删除或修改其配置,还可以在以后管理它们。

但如果没有自定义解决方案,并且仅出于批量创建的目的,您可以用于awk

创建文件

$ cat /tmp/topics.txt
test1:1:1
test2:1:2
Run Code Online (Sandbox Code Playgroud)

然后使用AWKsystem函数执行kafka-topics脚本,并解析文件

$ cat /tmp/topics.txt
test1:1:1
test2:1:2
Run Code Online (Sandbox Code Playgroud)

我们可以看到主题已创建

$ ./bin/kafka-topics.sh --zookeeper localhost:2181 --list
test1
test2
Run Code Online (Sandbox Code Playgroud)

注意:如此之快的数百个主题可能会使 Zookeeper 过载,因此可能有助于"; sleep 10"在最后添加一个调用。

从 Kafka 3.0 开始,Zookeeper 标志被 bootstrap-servers 取代。


Jas*_*ale 5

这似乎更像是一个 unix/bash 问题而不是 Kafka 问题:xargs 实用程序专门设计用于从参数列表重复运行命令。在您的特定情况下,您可以使用:

cat topic_list.txt | xargs -I % -L1 sh ./bin/kafka-topics --create --zookeeper localhost:2181 --topic % --replication-factor 1 --partitions 1
Run Code Online (Sandbox Code Playgroud)

如果你想要做一个“干运行”,看看会执行什么命令可以代替shecho sh

或者你可以确保你的配置文件有默认话题设置--replication-factor 1--partitions 1,只是让那些议题自动创建在第一时间将邮件发送给他们。