Основной сервер API Asp.net регистрирует события в Confluent Cloud Kafka при локальном тестировании, но не при размещении в службе приложений Azure.
У меня есть код, который мой Asp.net Core Web API использует для регистрации определенных событий на сервере Kafka, работающем в Confluent Cloud. Когда я запускаю сервер API на своем локальном компьютере, он может нормально отправлять и получать с помощью Kafka, но когда он работает в службе приложений Azure, я получаю ошибки "Local: Message Timed Out". Есть ли что-то в сети службы приложений Azure, что я могу изменить, чтобы обеспечить правильный поток сетевого трафика Kafka?
Вот фрагмент кода ниже:
public class ConfluentKafkaService {
private readonly ClientConfig clientConfig = new ClientConfig
{
BootstrapServers = "...",
ClientId = Dns.GetHostName(),
SecurityProtocol = SecurityProtocol.SaslSsl,
SaslMechanism = SaslMechanism.Plain,
SaslUsername = "...",
SaslPassword = @"..."
};
public async Task SendDeviceEvent(DeviceEvent de) {
var config = new ProducerConfig(clientConfig);
string topicName = $"...";
using var producer = new ProducerBuilder<Null, DeviceEvent>(config)
.Build();
try {
await producer.ProduceAsync(topicName, new Message<Null, DeviceEvent> { Value = de });
}
catch (ProduceException<Null, string> e) {
Console.WriteLine($"Error producing message: {e.Message}");
}
}
}
1 ответ
Моя проблема с подключением в конечном итоге возникла из-за того, что служба приложений Azure неправильно предоставляет librdkafka свое хранилище доверенных сертификатов. Я загрузил cacert.pem с https://curl.haxx.se/docs/caextract.html и указал на него, установивSslCaLocation
в моем ClientConfig вот так:
private readonly ClientConfig clientConfig = new ClientConfig
{
BootstrapServers = "",
ClientId = Dns.GetHostName(),
SecurityProtocol = SecurityProtocol.SaslSsl,
SslCaLocation = Path.Combine("assets", "cacert.pem"),
SaslMechanism = SaslMechanism.Plain,
SaslUsername = ""
SaslPassword = ""
}
Для получения дополнительной информации см. Этот выпуск: https://github.com/confluentinc/confluent-kafka-dotnet/issues/1112