具有Kerberos身份验证的Kafka Java Producer

时间:2016-11-16 08:59:49

标签: java apache-kafka kafka-producer-api

在发布问题之前,我已经完成了this个问题。它使用的是0.8.0版本的Kafka生产者代码。

我们正在使用Kafka 0.9.0.1 version。由于我们的群集使用Kerberos authentication进行保护。如何以编程方式设置Kerberos身份验证详细信息?

当我尝试发送消息时,消息未到达Kafka主题。我通过从Producer send获取Async Future<RecordMetadata>操作的结果来确认这一点,并且它抛出了超时异常。

示例代码:

Properties props = new Properties();
        props.put("bootstrap.servers", "1.2.3.4:6667");
        props.put("acks", "all");
        props.put("retries", 2);
//      props.put("security.inter.broker.protocol","PLAINTEXTSASL");
        props.put("security.protocol", "PLAINTEXTSASL");//WHEN I TRY THIS ITS THROWING ERROR
        props.put("sasl.kerberos.service.name","zookeeper");
        props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");
        props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");

        try {
            Producer<String, String> producer = new KafkaProducer<>(props);
            producer.send(new ProducerRecord<String, String>("kafkaTest", "kafka test message"));
            // Thread.sleep(4000);
            // producer.close();
        } catch (Exception e) {
            e.printStackTrace();
        }

我是否必须更改jaas文件中的任何内容?我没有看到任何带有Kerberos身份验证的Java API文档。

超时例外是:

java.util.concurrent.ExecutionException: org.apache.kafka.common.errors.TimeoutException: Failed to update metadata after 60000 ms.
    at org.apache.kafka.clients.producer.KafkaProducer$FutureFailure.<init>(KafkaProducer.java:686)
    at org.apache.kafka.clients.producer.KafkaProducer.send(KafkaProducer.java:449)
    at org.apache.kafka.clients.producer.KafkaProducer.send(KafkaProducer.java:339)
    at com.scb.upv.SimpleKafkaProducer.main(SimpleKafkaProducer.java:26)
Caused by: org.apache.kafka.common.errors.TimeoutException: Failed to update metadata after 60000 ms.

0 个答案:

没有答案