java - 如何使用 Java API 添加 SCRAM-SHA-512 kafka 配置?

标签 java apache-kafka apache-zookeeper

我想向我的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

是否有其他方法可以使用 Java 版 Kafka API 来解决此问题?

最佳答案

我看到一个帖子说 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,因为如果没有,它会抛出错误,指出找不到命令

关于java - 如何使用 Java API 添加 SCRAM-SHA-512 kafka 配置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61601817/

相关文章:

java - JTable标题背景颜色

java.lang.ClassCastException : java. lang.Class 无法转换为 java.lang.reflect.ParameterizedType

Java 加法给出错误答案

apache-spark - 从 Kafka 主题反序列化 Spark 结构化流数据

cluster-computing - 在 Apache NiFi 中创建双节点集群时连接被拒绝

java - 查询表达式中指示的分区键与 cosmos db 中的 feedoptions 中指示的分区键之间的差异

apache-kafka - 如何将主题从 kafka 集群复制到另一个 kafka 集群?

python - Windows安装librdkafka支持Python开发

apache-zookeeper - 使用 zkcli 更新 zookeeper 中的文件

apache-zookeeper - 是否可以在 ZooKeeper 中监视所有后代节点上的事件?