作者: | 来源:互联网 | 2024-10-20 13:21
又给自己挖了一个坑跳进去。KafkaManager使用单例模型获取到一个producer,然而自己代码里用的时候加了一个using然后自己在做测试的时候,for循环加10条数据发送
又给自己挖了一个坑跳进去。
KafkaManager使用单例模型获取到一个producer,然而自己代码里用的时候加了一个using
1 using (var producer = KafkaManager.Instance.GetProducer(Configs.Kafka_ScanResend))
2 {
3 //code goes here
4 }
然后自己在做测试的时候,for循环加10条数据发送到kafka,结果发现每次都只有第一条可以发送成功,之后都失败了。
debug之后发现 xxx.cs:4 处报错,错误消息是:object reference not set to an instance of object.细查可发现调用了dispose方法,将这个producer释放了。
然后就能知道是这个using里使用单例的方式,会导致这样的问题。
using使用方式可查看官方文档
https://docs.microsoft.com/zh-cn/dotnet/csharp/language-reference/keywords/using-statement
C#中Using里使用单例的问题