Как я могу добавить конфигурацию kafka SCRAM-SHA-512, используя java API? - PullRequest
0 голосов
/ 05 мая 2020

Я хочу добавить новых пользователей в свой кластер kafka, и способ сделать это, похоже, заключается в добавлении конфигурации SCRAM-SHA-512/256 в базу данных zookeeper, но я знаю только, как это сделать, используя утилита командной строки, которая будет выглядеть примерно так:

bin/kafka-configs.sh --zookeeper zookeeper_server_address --alter --add-config "SCRAM-SHA-512=[password=password]" --entity-type users --entity-name userName

Есть ли альтернатива, чтобы подойти к этому с помощью API Kafka для java?

1 Ответ

0 голосов
/ 05 мая 2020

Я видел ветку, в которой говорится, что API Kafka не поддерживает эту функциональность, поэтому я сделал собственный. 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, потому что в противном случае она выдаст ошибки говоря, что есть команды, которые не могут найти

...