azure - Azure ServiceBusConnection 应该是单例吗?

标签 azure azureservicebus

NuGet 中,保留 MessagingFactory 实例是一种很好的做法。

我们是否应该保留一个 ServiceBusConnection 实例(来自 new Nuget)以注入(inject)多个客户端?

编辑2018-07-25 00:22:00 UTC+8:

  • 澄清了一点,ServiceBusConnection 来自新的 NuGet。

最佳答案

Azure 服务总线 .NET Standard 客户端连接不像其前身那样通过 QueueClient 或任何工厂进行管理。 QueueClientMessageSenderMessageReceiver 之上的抽象,可以采用由多个发送者/接收者共享的 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/

相关文章:

c# - Azure 资源管理器

c# - 如何正确编码二进制数据以通过 REST api PUT 调用发送

c# - 一个解决方案中包含多个 Azure 云服务

c# - 获取Azure Servicebus队列错误 "The argument namespaceConnectionString is null or white space.\r\nParameter name: namespaceConnectionString"

azure - Azure 服务总线中是否存在 Poison 队列?

c# - 开发团队中具有服务总线触发器的 Azure Functions V2

azure - "Not available: couldn' t 连接到您的应用程序“实时指标 Azure Application Insights

c# - 跟踪特定方法调用

c# - 如何保证 CosmosDB 数据与 ServiceBus 保持同步,不被死信消息覆盖

node.js - 在 Node.js Azure 函数中检索服务总线消息的属性