.net-core - 在 .NET Core 中实例化多个 Microsoft.Azure.ServiceBus.QueueClient 实例
问题描述
我正在寻找使用依赖注入在 .Net Core 中创建多个 Microsoft.Azure.ServiceBus.QueueClient 实例的最佳实践。例如,实例应该是单例的吗?我找不到任何官方指导。
目前我正在将一个实例解析为单例,但一个新的要求是我必须使用相同的连接字符串为不同的队列实例化多个 QueueClient 实例。
问题是连接池和生命周期,以及如何/应该如何管理。我发现 .NET Framework 中提到了 MessagingFactory,但没有太多关于 .NET Core 中的等价物(如果有)的信息。
解决方案
客户端的 .NET Framework 版本MessagingFactoring
用作连接池的机制。使用相同工厂创建的每个客户端都将重用相同的连接对象。
对于 .NET Standard 客户端,情况不再如此。您可以选择是否要共享连接。如果您使用连接字符串构造所有队列客户端,则每次都将创建新连接。它既昂贵又需要资源。如果您使用相同的ServiceBusConnection
对象构建队列客户端,那么您将重复使用相同的连接,并且不会支付每次重新建立连接的成本。
请注意,无论何时重用该对象,都需要验证底层连接是否仍处于打开状态。如果不是,您将需要通过指定连接字符串或使用您拥有的连接字符串实例化一个新的连接对象来创建一个新的连接对象。
推荐阅读
- python - 从目录中的每个 .py 文件导入和测试变量
- python - 列表中每个值的出现次数是唯一的
- c# - 为什么基类方法不尊重 new 关键字?
- concurrency - .race 或 .hyper 何时优于非数据并行版本?
- python - 使用 Apply vs Manual 操作 Pandas 列
- c# - 如何通过查询参数值运行 ASP.NET MVC Web API 控制器方法?
- graph - 如何在 neo4j 中优化此查询?
- spring - 使用 Thymeleaf 访问会话范围的代理 bean
- php - 知道如何阻止段落遍历其 div 吗?
- python - Python/Thunderbird 中的字符串格式化