2

我正在使用 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();
}

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

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

4

1 回答 1

5

Azure Service Bus Best Practices帖子:

重用工厂和客户

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

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

于 2017-12-08T13:17:06.130 回答