C# 无法连接到kafka群集时没有异常
当程序无法连接到kafka群集时,我无法获取异常。 代码在控制台日志中输出异常,但我需要它抛出异常。我正在使用这个c#库:C# 无法连接到kafka群集时没有异常,c#,error-handling,.net-core,apache-kafka,confluent-platform,C#,Error Handling,.net Core,Apache Kafka,Confluent Platform,当程序无法连接到kafka群集时,我无法获取异常。 代码在控制台日志中输出异常,但我需要它抛出异常。我正在使用这个c#库: 要获取应用程序中的实际异常,需要添加.SetErrorHandler(): ProducerBuilder\u kafkaProducer=新的ProducerBuilder(\u configKafka); 使用(var kafkaProducer=_kafkaProducer.SetErrorHandler((生产者,错误)=> { //您可以在这里处理错误 }).B
要获取应用程序中的实际异常,需要添加
.SetErrorHandler()
:
ProducerBuilder\u kafkaProducer=新的ProducerBuilder(\u configKafka);
使用(var kafkaProducer=_kafkaProducer.SetErrorHandler((生产者,错误)=>
{
//您可以在这里处理错误
}).Build())
错误。原因包含错误消息谢谢!它起作用了。但是,将处理3个或更多错误。但我只想在生成消息后得到1个错误或异常。可能吗?
ProducerConfig _configKafka = new ProducerConfig { BootstrapServers ="localhost:9092/" };
ProducerBuilder<string, string> _kafkaProducer = new ProducerBuilder<string, string>(_configKafka);
using (var kafkaProducer = _kafkaProducer.Build())
{
try
{
var dr = kafkaProducer.ProduceAsync("Kafka_Messages", new Message<string, string> { Key = null, Value = $"message {i++}" });
dr.Wait(TimeSpan.FromSeconds(10));
if(dr.Exception!=null)
{
Console.WriteLine($"Delivery failed:");
}
var status = dr.Status;
//Console.WriteLine($"Delivered '{dr.Value}' to '{dr.TopicPartitionOffset}'");
}
catch (ProduceException<Null, string> e)
{
Console.WriteLine($"Delivery failed: {e.Error.Reason}");
}
}
%3|1565248275.024|FAIL|rdkafka#producer-1| [thrd:localhst:9092/bootstrap]: localhst:9092/bootstrap: Failed to resolve 'localhst:9092': No such host is known. (after 2269ms in state CONNECT)
%3|1565248275.024|ERROR|rdkafka#producer-1| [thrd:localhst:9092/bootstrap]: localhst:9092/bootstrap: Failed to resolve 'localhst:9092': No such host is known. (after 2269ms in state CONNECT)
%3|1565248275.025|ERROR|rdkafka#producer-1| [thrd:localhst:9092/bootstrap]: 1/1 brokers are down
ProducerBuilder<string, string> _kafkaProducer = new ProducerBuilder<string, string>(_configKafka);
using (var kafkaProducer = _kafkaProducer.SetErrorHandler((producer, error) =>
{
//You can handle error right here
}).Build())