【问题标题】:How long should TopicClient live for?TopicClient 应该存活多久?
【发布时间】:2015-12-26 22:38:24
【问题描述】:

在发布/订阅方案中将消息发布到 Azure ServiceBus 主题时,我目前正在保留并重用

的实例

Microsoft.ServiceBus.Messaging.TopicClient

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

随着时间的推移发送多条消息时,这是否被认为是最佳做法,还是应该为每条消息创建一个新客户端?

除了线程安全部分之外,MSDN 对此没有帮助:https://msdn.microsoft.com/library/azure/microsoft.servicebus.messaging.topicclient.aspx

【问题讨论】:

  • 我不确定最佳实践,但例如,在 NServiceBus 的代码中,我看到的唯一检查是 TopicClient 可能已关闭,然后他们创建一个新的,否则他们会重新使用旧的。见:github.com/Particular/NServiceBus.AzureServiceBus

标签: c# .net azure cloud azureservicebus


【解决方案1】:

TopicClient/QueueClient 创建和保持的成本相对较低,因为连接是由幕后的 MessagingFactory 维护的。如果没有剩余客户端,连接可能会中断,因此最好在您需要并且可行的情况下保持客户端。避免创建新客户并重复使用现有客户是好的。

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

【讨论】:

  • 你不会相信的!就在我阅读您的答案(并质疑您的权威 - 抱歉)之前,我在 Azure 事件中心 (channel9.msdn.com/Events/TechEd/Europe/2014/…) 上加载了第 9 频道的视频。谁开始介绍的?克莱门斯·韦斯特。我想这就是你。
  • 确实是我 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-07-07
  • 1970-01-01
  • 1970-01-01
  • 2014-01-20
  • 1970-01-01
  • 2011-05-12
  • 1970-01-01
相关资源
最近更新 更多