【问题标题】:Is it a good practice to re-create a Topic Client before sending a message to Azure Topic在向 Azure 主题发送消息之前重新创建主题客户端是否是一种好习惯
【发布时间】:2017-12-08 21:17:06
【问题描述】:

我正在使用 Microsoft.Azure.ServiceBus, Version=2.0.0.0 程序集连接到 Azure 主题。代码如下

public void SendMessage(Message brokeredMessage) 
{
    var topicClient = new TopicClient(_configuration.ConnectionString, topicName, _defaultRetryPolicy);
    await topicClient.SendAsync(brokeredMessage);
    await topicClient.CloseAsync();
}

我想知道每次我需要向主题发送消息时创建主题客户端是否是一种好习惯,或者我是否应该在应用程序启动时创建主题客户端并在每次需要发送时继续使用同一个客户端留言?

我需要考虑任何性能或可扩展性问题吗?

【问题讨论】:

    标签: azure azureservicebus brokeredmessage


    【解决方案1】:

    来自Azure Service Bus Best Practices 发帖:

    重用工厂和客户端

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

    基于此,您应该重用Topic Client 对象。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-09-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-22
      • 1970-01-01
      • 1970-01-01
      • 2021-08-04
      相关资源
      最近更新 更多