在旧 NuGet 中,保留 MessagingFactory
实例是一种很好的做法。
我们是否应该保留一个 ServiceBusConnection
实例(来自 new Nuget)以注入(inject)多个客户端?
编辑2018-07-25 00:22:00 UTC+8:
- 澄清了一点,ServiceBusConnection 来自新的 NuGet。
最佳答案
Azure 服务总线 .NET Standard 客户端连接不像其前身那样通过 QueueClient 或任何工厂进行管理。 QueueClient
是 MessageSender
和 MessageReceiver
之上的抽象,可以采用由多个发送者/接收者共享的 ServiceBusConnection
。您可以自由选择是否共享相同的连接对象。
var connection = new ServiceBusConnection(connectionString);
var queueClient1 = new QueueClient(connection, "queue1", ReceiveMode.PeekLock, RetryPolicy.Default);
var queueClient2 = new QueueClient(connection, "queue2", ReceiveMode.PeekLock, RetryPolicy.Default);
// Queue clients share the same connection
var message1 = new Message(Encoding.UTF8.GetBytes("Message1"));
var message2 = new Message(Encoding.UTF8.GetBytes("Message2"));
根据您正在使用的命名空间层,您必须进行基准测试并查看哪种方法更适合您。我的发现表明,具有多个连接的标准层有助于提高吞吐量,而高级层则不会。 This post暗示了为什么会这样。
关于azure - Azure ServiceBusConnection 应该是单例吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51500645/