Azure Service TopicClient线程安全吗?可重复使用?

时间:2017-08-09 15:35:39

标签: multithreading azure azureservicebus azure-servicebus-topics

我们正在使用Azure SDK将消息发布到Service Bus。 在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);
  

可以将topicClient转换为Singleton&跨多个线程重用?

1 个答案:

答案 0 :(得分:6)

  

可以将topicClient转换为Singleton&重复使用多个   线程?

是的,这是推荐的做法。来自Best Practices for performance improvements using Service Bus Messaging

  

Service Bus客户端对象,例如QueueClient或MessageSender   通过MessagingFactory对象创建,该对象也提供   连接的内部管理。 您不应该关闭消息   发送后的工厂或队列,主题和订阅客户端   消息,然后在发送下一条消息时重新创建它们。   关闭消息传递工厂会删除与Service Bus的连接   服务,并在重新创建时建立新连接   厂。建立连接是一项昂贵的操作   可以避免重复使用相同的工厂和客户端对象   操作。您可以安全地使用QueueClient对象进行发送   来自并发异步操作和多个线程的消息。