[英]Unable to connect to Kafka server using .net
我無法從 .net 連接到 Kafka 服務器。我們使用以下命令創建了 truststore.jks 文件。pem 文件
keytool -exportcert -alias $alias -keystore $keyStore -rfc -file $outputFolder/certificate.pem -storepass $password
echo "Generating key.pem"
keytool -v -importkeystore -srckeystore $keyStore -srcalias $alias -destkeystore $outputFolder/cert_and_key.p12 -deststoretype PKCS12 -storepass $password -srcstorepass $password
openssl pkcs12 -in $outputFolder/cert_and_key.p12 -nodes -nocerts -out $outputFolder/key.pem -passin pass:$password
echo "Generating CARoot.pem"
keytool -exportcert -alias $alias -keystore $keyStore -rfc -file $outputFolder/CARoot.pem -storepass $password
我的 .net 生產者配置如下所示
ProducerConfig config = new ProducerConfig
{
BootstrapServers = bootstrapServers,
SecurityProtocol = SecurityProtocol.Ssl,
SslCaLocation = @"C:\Users\ProduceKafkaMessages\CARoot\CARoot.pem"
};
using (var producer = new ProducerBuilder<Null, string>(config).Build())
{
try
{
var deliveryStatus = producer.ProduceAsync(topicName, new Message<Null, string> { Value = KafkaMessage }).Result;
//producer.Flush(TimeSpan.FromSeconds(10));
}
catch (Exception ex)
{
}
}
但每次它都會拋出異常“本地:消息超時”。 這里服務器上的配置是“沒有啟用任何 ACL 的啟用 SSL 的 Kafka”。
我在 Python 中嘗試過同樣的事情,我能夠成功發送 kafka 主題。 下面是python代碼
from kafka import KafkaProducer
producer = KafkaProducer(bootstrap_servers=kafkaBrokers,
security_protocol='SSL',
ssl_cafile='CARoot.pem',
ssl_password="XXXXX")
producer.send(topic, bytes('hello','utf-8'))
producer.flush()
為什么它在 .net 中不起作用。有幫助嗎?
你應該使用
SslCaPem = File.ReadAllLines(@"C:\Users\ProduceKafkaMessages\CARoot\CARoot.pem");
而不是你的
SslCaLocation = @"C:\Users\ProduceKafkaMessages\CARoot\CARoot.pem"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.