Kafka 主题可以通过命令行工具或 API 创建。
在存在多个主题和多个环境(dev/qa/prod 等(的大型系统中,有必要控制主题的创建及其配置(分区等(。例如,我们可能希望在源代码管理下维护一个 shell 脚本文件,该文件检查主题是否已存在,如果不存在,则创建它。然后,可以将相同的脚本应用于每个连续的环境(可能作为 CI/CD 的一部分自动创建或修改所需的主题(。
是否有任何用于维护 Kafka 主题拓扑的标准文件格式或工具?
Kafka 没有提供开箱即用的脚本,但你可以编写一个简单的 SHELL 脚本来实现这一点,如下所示:
#!/bin/bash
TOPIC=$1
ZK_CONNECT=localhost:2181
KAFKA_PATH=<your Kafka install directory>
LIST=`$KAFKA_PATH/bin/kafka-topics.sh --zookeeper $ZK_CONNECT --list`
arr=$(echo $LIST|tr " ", "n")
for each in ${arr[*]}
do
if [[ $each == $TOPIC ]]; then
echo "Already exists..."
exit
fi
done
$KAFKA_PATH/bin/kafka-topics.sh --zookeeper $ZK_CONNECT --create --topic
$TOPIC --partitions <num_partitions> --replication-factor <num_replicas>