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

Instantiating multiple instance of Microsoft.Azure.ServiceBus.QueueClient in .NET Core

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

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

关注的是连接池和生命周期,以及如何管理这 is/should。我在 .NET Framework 中发现了 MessagingFactory 的提及,但没有太多关于 .NET Core 中等效项(如果有的话)的信息。

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

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

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