我们正在使用 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);
topicClient 可以转换为 Singleton 并在多个线程中重用吗?
topicClient 可以转换为 Singleton 并在多个实例之间重用吗
线程?
是的,这是推荐的做法。从Best Practices for performance improvements using Service Bus Messaging https://learn.microsoft.com/en-us/azure/service-bus-messaging/service-bus-performance-improvements#reusing-factories-and-clients
服务总线客户端对象,例如 QueueClient 或 MessageSender,
通过 MessagingFactory 对象创建,该对象还提供
连接的内部管理。您不应该关闭消息传递
发送后,工厂或队列、主题和订阅客户端
消息,然后在发送下一条消息时重新创建它们。
关闭消息传递工厂会删除与服务总线的连接
服务,并在重新创建时建立新连接
工厂。建立连接是一项昂贵的操作,您需要
可以通过为多个重复使用相同的工厂和客户端对象来避免
运营。您可以安全地使用 QueueClient 对象进行发送
来自并发异步操作和多线程的消息。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)