.net core 正在.NET Core中实例化Microsoft.Azure.ServiceBus.QueueClient的多个实例

.net core 正在.NET Core中实例化Microsoft.Azure.ServiceBus.QueueClient的多个实例,.net-core,azureservicebus,.net-core-2.2,.net Core,Azureservicebus,.net Core 2.2,我正在寻找使用依赖项注入在.Net Core中创建多个Microsoft.Azure.ServiceBus.QueueClient实例的最佳实践。例如,实例应该是单例的吗?我找不到任何关于这方面的官方指导 目前,我正在将一个实例解析为单例,但新的需求要求我必须使用相同的连接字符串为不同的队列实例化多个QueueClient实例 关注点是连接池和生存期,以及如何管理。我发现有人提到.NET Framework中的MessagingFactory,但没有太多关于.NET Core中等价物(如果有的话

我正在寻找使用依赖项注入在.Net Core中创建多个Microsoft.Azure.ServiceBus.QueueClient实例的最佳实践。例如,实例应该是单例的吗?我找不到任何关于这方面的官方指导

目前,我正在将一个实例解析为单例,但新的需求要求我必须使用相同的连接字符串为不同的队列实例化多个QueueClient实例


关注点是连接池和生存期,以及如何管理。我发现有人提到.NET Framework中的MessagingFactory,但没有太多关于.NET Core中等价物(如果有的话)的信息。

.NET Framework版本的客户端使用了
MessagingFactoring
作为连接池机制。使用相同工厂创建的每个客户机都将重复使用相同的连接对象

对于.NET标准客户端,情况不再如此。您可以选择是否共享连接。如果使用连接字符串构建所有队列客户端,则每次都将创建新连接。这既昂贵又需要资源。如果您使用相同的
ServiceBusConnection
对象构造队列客户端,那么您将重复使用相同的连接,并且不会每次支付重新建立连接的费用


请注意,无论何时重用对象,都需要验证基础连接是否仍然打开。如果不是,则需要通过指定连接字符串或使用现有的连接字符串实例化新的连接对象来创建一个新的连接对象。

因此,基本上,开箱即用的连接池不再可用,必须从头开始实现?我不明白微软为什么要拆除工厂。有时候,在处理不同的抽象层和接口时,重用ServiceBusConnection对象并不是那么简单。手动操作的灵活性很好,但是完全取消工厂似乎没有多大意义。如果我在推理中遗漏了什么,请纠正我。正确,没有OOTB池。你可以提出一个建议。就个人而言,我喜欢拥有控件的想法,并且没有本质上充当
ServiceBusConnection
的混乱的
MessagingFactory