我试图使用Java运行我的Kafka Streams应用程序,并以K,V对的形式将我的汇合凭证作为环境变量传递。
但我面临一个错误的问题,因为-
- org.apache.kafka.common.KafkaException: Failed to create new KafkaAdminClient
Exception in thread "main" org.apache.kafka.common.KafkaException: Failed to create new KafkaAdminClient
Caused by: java.lang.IllegalArgumentException: Login module control flag not specified in JAAS config
这是我如何设置卡夫卡的属性-
Properties kafkaProps = new Properties();
kafkaProps.put(StreamsConfig.APPLICATION_ID_CONFIG, "MyKafkaApplicationV1.0.0");
kafkaProps.put(StreamsConfig.STATE_DIR_CONFIG, "tmp/state-store");
kafkaProps.put(StreamsConfig.BOOTSTRAP_SERVERS_CONFIG, System.getenv("bootstarpServers"));
kafkaProps.put(StreamsConfig.SECURITY_PROTOCOL_CONFIG, System.getenv("securityProtocol"));
kafkaProps.put(SaslConfigs.SASL_JAAS_CONFIG, System.getenv(SASL_JAAS_CONFIG));
kafkaProps.put(SaslConfigs.SASL_MECHANISM, System.getenv(SASL_MECHANISM));
下面是我传递环境变量的方法-
export saslJaasConfig=org.apache.kafka.common.security.plain.PlainLoginModule required username='MyUserName' password='MyPassword';
export saslMechanism=PLAIN
但是,如果我在属性对象(如- kafkaProps.put(SaslConfigs.SASL_JAAS_CONFIG, "org.apache.kafka.common.security.plain.PlainLoginModule required username='MyUserName' password='MyPassword';");
)中直接对Creds字符串进行硬编码,那么它就正常工作,并且没有出现错误。
请帮助我错过了什么!提前谢谢。
发布于 2022-01-10 12:55:08
您可以在jvm argument.Please尝试以下操作时传递jass配置。
-Djava.security.auth.login.config=jaas_config.conf
jaas_config.conf含量
KafkaClient {
org.apache.kafka.common.security.plain.PlainLoginModule required
username="username"
password="password";
};
https://stackoverflow.com/questions/70652534
复制相似问题