C# TopicClient应该活多久?

C# TopicClient应该活多久?,c#,.net,azure,cloud,azureservicebus,C#,.net,Azure,Cloud,Azureservicebus,在发布/订阅场景中将消息发布到Azure ServiceBus主题时,我当前保留并重用 Microsoft.ServiceBus.Messaging.TopicClient 我已经将它的创建和使用包装在一个实现IDisposable的组件中,以便TopicClient可以在处理时关闭,但是我不确定维护到ServiceBus的连接的成本(如果有) 在一段时间内发送多条消息时,这被认为是最佳做法,还是应该为每条消息创建一个新的客户端 除了关于线程安全的部分外,MSDN在这方面没有帮助:TopicCl

在发布/订阅场景中将消息发布到Azure ServiceBus主题时,我当前保留并重用

Microsoft.ServiceBus.Messaging.TopicClient

我已经将它的创建和使用包装在一个实现IDisposable的组件中,以便TopicClient可以在处理时关闭,但是我不确定维护到ServiceBus的连接的成本(如果有)

在一段时间内发送多条消息时,这被认为是最佳做法,还是应该为每条消息创建一个新的客户端


除了关于线程安全的部分外,MSDN在这方面没有帮助:

TopicClient/QueueClient的创建和保持成本相对较低,因为连接是由MessagingFactory在后台维护的。如果没有客户机,连接可能会断开,因此最好保持客户机在您需要的时间内,并且尽可能长。避免创建新客户机和重用现有客户机是好的


可以从多个线程使用客户端,也可以在不设置锁的情况下并发发送/接收。这正是线程安全部分试图传达的信息。

我不确定最佳实践,但例如,在NServiceBus代码中,我看到的唯一检查是TopicClient可能已关闭,之后他们将创建一个新的客户端,否则他们将重复使用旧的客户端。瞧,你不会相信的!就在我阅读你的答案(并质疑你的权威-对不起)之前,我在Azure Event Hub()上加载了一段9频道视频。介绍是谁开始的?克莱门斯·瓦特斯。我猜这是你,那是我,真的:)