Я пытаюсь подключить клиента Kafka Java к брокеру Kafka с помощью SASL Plain. Но когда я пытаюсь отправить сообщение от источника, сервер Kafka регистрирует следующую ошибку:
[2020-04-30 14:48:14,955] INFO [SocketServer brokerId=0] Failed authentication with /127.0.0.1 (Unexpected Kafka request of type METADATA during SASL handshake.) (org.apache.kafka.common.network.Selector)
Судя по всему, производитель пытается отправить запрос метаданных до подтверждения SASL. Как я могу выполнить рукопожатие перед отправкой сообщения?
Ниже приведен мой файл kafka_server_jaas.conf
, который используется для Kafka Server.
KafkaServer {
org.apache.kafka.common.security.plain.PlainLoginModule required
username="admin"
password="admin-secret"
user_admin="admin-secret";
};
Client {
org.apache.kafka.common.security.plain.PlainLoginModule required
username="admin"
password="admin-secret";
};
Ниже приведен мой файл zookeeper_jaas.conf
, который используется для зоопарка:
Server {
org.apache.kafka.common.security.plain.PlainLoginModule required
username="admin"
password="admin-secret"
user_admin="admin-secret";
};
У моего Java производителя я установил следующие свойства:
Properties properties = new Properties();
properties.put("bootstrap.servers", "localhost:9092");
properties.put("sasl.jaas.config", "org.apache.kafka.common.security.plain.PlainLoginModule required username=\"admin\" password=\"admin_secret\"");
properties.put("sasl.mechanisms", "PLAIN");
properties.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");
KafkaProducer kafkaProducer = new KafkaProducer(properties);
Что-то не так я делаю?