简单的kafkaproducer程序不能在java中工作

jjjwad0x  于 2021-06-07  发布在  Kafka
关注(0)|答案(1)|浏览(363)

我做不到。我想把一个简单的测试信息推到Kafka的主题上。下面是代码和错误

Properties props = new Properties();
    props.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, "kafkaBrokerfqdn:6667");
    props.put(CommonClientConfigs.SECURITY_PROTOCOL_CONFIG, "SASL_PLAINTEXT");
    props.put(ProducerConfig.ACKS_CONFIG, "all");
    props.put(ProducerConfig.RETRIES_CONFIG, "3");
    props.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, "org.apache.kafka.common.serialization.StringSerializer");
    props.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, "org.apache.kafka.common.serialization.StringSerializer");
    props.put("java.security.auth.login.config", "kafka_client_jaas.conf");

    Producer<String, String> kProducer = new KafkaProducer<String, String>(props);
    kProducer.send(new ProducerRecord<String, String>("test_topic", "testMessage"));
    kProducer.close();

下面是我面临的错误。我已经将jaas conf和jar放在同一个目录中。

Exception in thread "main" org.apache.kafka.common.KafkaException: Failed to construct kafka producer
    at org.apache.kafka.clients.producer.KafkaProducer.<init>(KafkaProducer.java:338)
    at org.apache.kafka.clients.producer.KafkaProducer.<init>(KafkaProducer.java:188)
    at com.training.KProducer.main(KProducer.java:34)
Caused by: org.apache.kafka.common.KafkaException: org.apache.kafka.common.KafkaException: Jaas configuration not found
    at org.apache.kafka.common.network.SaslChannelBuilder.configure(SaslChannelBuilder.java:86)
    at org.apache.kafka.common.network.ChannelBuilders.create(ChannelBuilders.java:71)
    at org.apache.kafka.clients.ClientUtils.createChannelBuilder(ClientUtils.java:85)
    at org.apache.kafka.clients.producer.KafkaProducer.<init>(KafkaProducer.java:302)
    ... 2 more
Caused by: org.apache.kafka.common.KafkaException: Jaas configuration not found
    at org.apache.kafka.common.security.kerberos.KerberosLogin.getServiceName(KerberosLogin.java:299)
    at org.apache.kafka.common.security.kerberos.KerberosLogin.configure(KerberosLogin.java:103)
    at org.apache.kafka.common.security.authenticator.LoginManager.<init>(LoginManager.java:45)
    at org.apache.kafka.common.security.authenticator.LoginManager.acquireLoginManager(LoginManager.java:68)
    at org.apache.kafka.common.network.SaslChannelBuilder.configure(SaslChannelBuilder.java:78)
    ... 5 more
Caused by: java.io.IOException: Could not find a 'KafkaClient' entry in this configuration.
    at org.apache.kafka.common.security.JaasUtils.jaasConfig(JaasUtils.java:50)
    at org.apache.kafka.common.security.kerberos.KerberosLogin.getServiceName(KerberosLogin.java:297)
    ... 9 more
jw5wzhpr

jw5wzhpr1#

java.security.auth.login.config 是系统属性。您应该将它作为参数传递给jvm,producer在jvm中运行。

-Djava.security.auth.login.config=${CONFIG_HOME}/kafka_client_jaas.conf

相关问题