首页 > 解决方案 > 在 .NET Core 中实例化多个 Microsoft.Azure.ServiceBus.QueueClient 实例

问题描述

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

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

问题是连接池和生命周期,以及如何/应该如何管理。我发现 .NET Framework 中提到了 MessagingFactory,但没有太多关于 .NET Core 中的等价物(如果有)的信息。

标签: .net-coreazureservicebus.net-core-2.2

解决方案


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

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

请注意,无论何时重用该对象,都需要验证底层连接是否仍处于打开状态。如果不是,您将需要通过指定连接字符串或使用您拥有的连接字符串实例化一个新的连接对象来创建一个新的连接对象。


推荐阅读