【问题标题】:Is Azure Service TopicClient Thread Safe & Reusable?Azure Service TopicClient 线程安全且可重用吗?
【发布时间】:2017-08-09 15:35:38
【问题描述】:

我们正在使用 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 并跨多个线程重用?

【问题讨论】:

    标签: multithreading azure azureservicebus azure-servicebus-topics


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多