我正在使用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();
}
我想知道每次需要向主题发送消息时创建主题客户端是一个好习惯,还是应该在应用程序启动时创建主题客户端并在每次需要发送时继续使用同一客户端一条消息?
我是否需要考虑任何性能或可扩展性问题?
答案 0 :(得分:2)
来自Azure Service Bus Best Practices
帖子:
重用工厂和客户
Service Bus客户端对象,例如QueueClient或MessageSender 通过MessagingFactory对象创建,该对象也提供 连接的内部管理。你不应该关闭消息 发送后的工厂或队列,主题和订阅客户端 消息,然后在发送下一条消息时重新创建它们。 关闭消息传递工厂会删除与Service Bus的连接 服务,并在重新创建时建立新连接 厂。 建立连接是一项昂贵的操作 可以避免重复使用相同的工厂和客户端对象 操作。您可以安全地使用QueueClient对象进行发送 来自并发异步操作和多个线程的消息。
基于此,您应该重用Topic Client
对象。