发送消息给Kerberized Kafka。来自kafka模板(spring-kafka)版本1.15(不使用Spring启动)

时间:2017-06-07 06:08:44

标签: spring apache-kafka spring-kafka

由于兼容的问题,

Using this kafka集成项目版本1.15。如何使用发送消息到Kerberized kafka,我们不使用spring boot .how设置属性以将消息发送到kafka?我试着看对于documentation但无法在ProducerConfig中找到与kerberos相关的属性。

2 个答案:

答案 0 :(得分:0)

请参阅the kafka documentation

按照那里所述设置WITH cte AS (SELECT A,B,C, ROW_NUMBER() OVER (PARTITION BY A, ORDER BY CASE WHEN b='y' THEN 0 ELSE 1 END) rn FROM MyTable ) SELECT A,B,C, CASE WHEN (SELECT COUNT(*) FROM MyTable t2 WHERE t1.A=t2.A)>1 THEN CASE WHEN b='y' THEN E ELSE D END ELSE {use your existing CASE Expression} END AS F FROM cte t1 WHERE rn=1 属性:

sasl.jaas.config

以及

sasl.jaas.config=com.sun.security.auth.module.Krb5LoginModule required \
    useKeyTab=true \
    storeKey=true  \
    keyTab="/etc/security/keytabs/kafka_client.keytab" \
    principal="kafka-client-1@EXAMPLE.COM";

答案 1 :(得分:0)

我使用了来自 kerberozied kafka (HDP群集)的消息。所以我在分享我的想法。这可能有所帮助。

我构建了我的消费者属性

    Map<String, Object> consumerConf = new HashMap<>();
    consumerConf.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, "hdp.master:6667"); 
    consumerConf.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class);
    consumerConf.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class);
    consumerConf.put(ConsumerConfig.GROUP_ID_CONFIG, "grp12");
    consumerConf.put("security.protocol", "SASL_PLAINTEXT");

因此,您可以在生产者配置中添加consumerConf.put("security.protocol", "SASL_PLAINTEXT");

再次需要设置系统属性

        System.setProperty("java.security.krb5.conf", "Path to krb5.conf");
        System.setProperty("java.security.auth.login.config", "path to kafka-jaas.conf");
        System.setProperty("javax.security.auth.useSubjectCredsOnly", "true");
        System.setProperty("sun.security.krb5.debug", "true");

这里使用的端口是6667,因为我在Horton工作平台上使用kafka。