У меня есть кластер Kerberized с 2 брокерами Kafka и 3 узлами Zookeeper. У меня есть Java локальное приложение (использующее kafka-client 2.4.0), которое должно создавать и читать сообщения из тем в брокерах Kafka. Во входных данных на виртуальной машине я дал:
-Djava.security.auth.login.config=/Users/mypath/kafka_client_jaas.conf
У меня также есть реестр реестра (Confluent), локально, подключен к кластеру. Для создания источника задайте следующие параметры:
Properties producerProps = new Properties();
producerProps.put(CommonClientConfigs.SECURITY_PROTOCOL_CONFIG, "SASL_PLAINTEXT");
producerProps.put("sasl.kerberos.service.name", "kafka");
producerProps.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, Constants.KAFKA_BROKERS);
producerProps.put(ProducerConfig.CLIENT_ID_CONFIG, user);
producerProps.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class);
producerProps.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, KafkaAvroSerializer.class);
producerProps.put(KafkaAvroSerializerConfig.SCHEMA_REGISTRY_URL_CONFIG, "http://localhost:8081");
ошибка:
java.io.IOException: Configuration Error:
row 5: expected [option key], found [null]
at sun.security.provider.ConfigFile$Spi.<init>(ConfigFile.java:137)
at sun.security.provider.ConfigFile.<init>(ConfigFile.java:102)
Проблема вызвана
producerProps.put(CommonClientConfigs.SECURITY_PROTOCOL_CONFIG, "SASL_PLAINTEXT");
Без этой строки приложение компилируется, но я получаю:
org.apache.kafka.common.errors.TimeoutException: Topic TEST not present in metadata after 60000 ms.
Что мне делать?
PS "kafka_client_jaas.conf
" должен быть правильным, поскольку я использую его также с реестром схемы, и он отлично работает.
kafka_client_jaas.conf:
KafkaClient { com.sun.security.auth.module.Krb5LoginModule required
useKeyTab=true
storeKey=true
keyTab="/Users/path/kafka.service.keytab" \
principal="kafka/kafka-broker01.domain.xx@DOMAIN.XX"; };