我们正在使用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&跨多个线程重用?
答案 0 :(得分:6)
可以将topicClient转换为Singleton&重复使用多个 线程?
是的,这是推荐的做法。来自Best Practices for performance improvements using Service Bus Messaging
Service Bus客户端对象,例如QueueClient或MessageSender 通过MessagingFactory对象创建,该对象也提供 连接的内部管理。 您不应该关闭消息 发送后的工厂或队列,主题和订阅客户端 消息,然后在发送下一条消息时重新创建它们。 关闭消息传递工厂会删除与Service Bus的连接 服务,并在重新创建时建立新连接 厂。建立连接是一项昂贵的操作 可以避免重复使用相同的工厂和客户端对象 操作。您可以安全地使用QueueClient对象进行发送 来自并发异步操作和多个线程的消息。