Using this kafka集成项目版本1.15。如何使用发送消息到Kerberized kafka,我们不使用spring boot .how设置属性以将消息发送到kafka?我试着看对于documentation但无法在ProducerConfig中找到与kerberos相关的属性。
答案 0 :(得分:0)
按照那里所述设置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。