TopicClient应该活多久?
How long should TopicClient live for?
在 pub/sub 场景中将消息发布到 Azure ServiceBus 主题时,我目前持有并重用
的一个实例
Microsoft.ServiceBus.Messaging.TopicClient
我已经将它的创建和使用包装在一个实现 IDisposable 的组件中,这样 TopicClient 就可以在处理时关闭,但是我不确定维护与 ServiceBus 的连接的成本(如果有的话)。
随着时间的推移发送多条消息时,这是否被认为是最佳做法,或者我应该为每条消息创建一个新客户端?
除了线程安全部分外,MSDN 对此没有帮助:https://msdn.microsoft.com/library/azure/microsoft.servicebus.messaging.topicclient.aspx
TopicClient/QueueClient 创建和保持相对便宜,因为连接由 MessagingFactory 在后台维护。如果没有剩余的客户端,连接可能会中断,因此最好在您需要且可行的情况下尽可能长时间地保留客户端。避免创建新客户并重复使用现有客户是好的。
可以从多个线程使用客户端,您也可以 send/receive 在不设置锁的情况下并发。这就是 thread-safety 部分试图传达的信息。
在 pub/sub 场景中将消息发布到 Azure ServiceBus 主题时,我目前持有并重用
的一个实例Microsoft.ServiceBus.Messaging.TopicClient
我已经将它的创建和使用包装在一个实现 IDisposable 的组件中,这样 TopicClient 就可以在处理时关闭,但是我不确定维护与 ServiceBus 的连接的成本(如果有的话)。
随着时间的推移发送多条消息时,这是否被认为是最佳做法,或者我应该为每条消息创建一个新客户端?
除了线程安全部分外,MSDN 对此没有帮助:https://msdn.microsoft.com/library/azure/microsoft.servicebus.messaging.topicclient.aspx
TopicClient/QueueClient 创建和保持相对便宜,因为连接由 MessagingFactory 在后台维护。如果没有剩余的客户端,连接可能会中断,因此最好在您需要且可行的情况下尽可能长时间地保留客户端。避免创建新客户并重复使用现有客户是好的。
可以从多个线程使用客户端,您也可以 send/receive 在不设置锁的情况下并发。这就是 thread-safety 部分试图传达的信息。