【问题标题】:How can i add SCRAM-SHA-512 kafka config using Java API?如何使用 Java API 添加 SCRAM-SHA-512 kafka 配置?
【发布时间】:2020-05-04 21:20:14
【问题描述】:
我想将新用户添加到我的 kafka 集群中,这样做的方法似乎是在 zookeeper 数据库中添加 SCRAM-SHA-512/256 配置,但我只知道如何使用命令行实用程序,如下所示:
bin/kafka-configs.sh --zookeeper zookeeper_server_address --alter --add-config "SCRAM-SHA-512=[password=password]" --entity-type users --entity-name userName
有没有其他方法可以使用 Kafka API for Java 来解决这个问题?
【问题讨论】:
标签:
java
apache-kafka
apache-zookeeper
【解决方案1】:
我看到一个帖子说 Kafka api 不具备这个功能,所以我制作了一个自定义 .sh 脚本来创建用户 (create-user.sh):
#!/bin/bash
SERVER=$1
USER=$2
PASSWORD=$3
if [ "x$SERVER" = "x" ] || [ "x$USER" = "x" ] || [ "x$PASSWORD" = "x" ]; then
echo "usage: $0 <server:port> <user> <password>"
exit
fi
bin/kafka-configs.sh --zookeeper $SERVER --alter --add-config "SCRAM-SHA-512=[password=$PASSWORD]" --entity-type users --entity-name $USER
我从 java 程序中调用它:
ProcessBuilder pb = new ProcessBuilder("./create-user.sh", "zookeeper-server", "sampleUser", "password");
pb.environment().put("PATH", "/home/myHome/Programs/java/jdk-13.0.2/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin");
Process p = pb.redirectErrorStream(true)
.directory(new File("/home/myHome/Desktop/Kafka/kafka_2.12-2.4.1"))
.start();
注意,我需要在 PATH 中指定一些目录并将其作为环境变量传递给 ProcessBuilder,因为如果没有,它会抛出错误,说有些命令找不到