Azure 服务 TopicClient 线程安全且可重用吗?
Is Azure Service TopicClient Thread Safe & Reusable?
我们正在使用 Azure SDK 将消息发布到服务总线。
在 Web API 调用中,我们为每个传入请求重复执行这些任务
MessagingFactory factory = MessagingFactory.CreateFromConnectionString(conStr);
factory.RetryPolicy = new RetryExponential(TimeSpan.FromSeconds(1), TimeSpan.FromSeconds(2), 3);
var namespaceManager = NamespaceManager.CreateFromConnectionString(conStr);
TopicClient topicClient = factory.CreateTopicClient(topicName);
Can topicClient be converted into Singleton & reused across multiple threads?
Can topicClient be converted into Singleton & reused across multiple
threads?
是的,这是推荐的做法。来自 Best Practices for performance improvements using Service Bus Messaging
Service Bus client objects, such as QueueClient or MessageSender, are
created through a MessagingFactory object, which also provides
internal management of connections. You should not close messaging
factories or queue, topic, and subscription clients after you send a
message, and then re-create them when you send the next message.
Closing a messaging factory deletes the connection to the Service Bus
service, and a new connection is established when recreating the
factory. Establishing a connection is an expensive operation that you
can avoid by re-using the same factory and client objects for multiple
operations. You can safely use the QueueClient object for sending
messages from concurrent asynchronous operations and multiple threads.
我们正在使用 Azure SDK 将消息发布到服务总线。 在 Web API 调用中,我们为每个传入请求重复执行这些任务
MessagingFactory factory = MessagingFactory.CreateFromConnectionString(conStr);
factory.RetryPolicy = new RetryExponential(TimeSpan.FromSeconds(1), TimeSpan.FromSeconds(2), 3);
var namespaceManager = NamespaceManager.CreateFromConnectionString(conStr);
TopicClient topicClient = factory.CreateTopicClient(topicName);
Can topicClient be converted into Singleton & reused across multiple threads?
Can topicClient be converted into Singleton & reused across multiple threads?
是的,这是推荐的做法。来自 Best Practices for performance improvements using Service Bus Messaging
Service Bus client objects, such as QueueClient or MessageSender, are created through a MessagingFactory object, which also provides internal management of connections. You should not close messaging factories or queue, topic, and subscription clients after you send a message, and then re-create them when you send the next message. Closing a messaging factory deletes the connection to the Service Bus service, and a new connection is established when recreating the factory. Establishing a connection is an expensive operation that you can avoid by re-using the same factory and client objects for multiple operations. You can safely use the QueueClient object for sending messages from concurrent asynchronous operations and multiple threads.