簡體   English   中英

無法使用 .net 連接到 Kafka 服務器

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM