【问题标题】:Checking connection to Azure Service Bus检查与 Azure 服务总线的连接
【发布时间】:2018-04-09 15:16:51
【问题描述】:

我有一些依赖于 Azure 服务总线的代码。我使用以下代码创建了一个端点来检查我的 Azure 服务总线主题的可用性:

var connectionString = CloudConfigurationManager.GetSetting("servicebusconnectionstring");
var manager = NamespaceManager.CreateFromConnectionString(connectionString);
var sub = manager.GetSubscription("mytopic", "mysubscription");
var count = sub.MessageCount;

这确实有效,但我有两个问题(因为使用此代码时我经常遇到超时)。

问题 1:是否有更简单/更好的方法从 C# 检查服务总线连接性?

问题 2:使用上面的代码时,我应该在 IoC 容器中将哪些实例配置为单例?我怀疑每次 ping 此端点时都会创建所有实例以导致超时,因为在我重用 TopicClient 的其他端点中没有发现问题。

【问题讨论】:

    标签: azure azureservicebus azure-servicebus-topics


    【解决方案1】:

    获取MessageCount 可能是一项昂贵的操作,尤其是在价值很高的情况下。

    您可以运行一个简单的操作,例如检查主题是否存在:

    var ns = NamespaceManager.CreateFromConnectionString("...");
    ns.TopicExists("mytopic");
    

    如果与服务总线的通信失败,它将引发异常(可能是MessagingCommunicationException)。

    在请求之间重复使用NamespaceManager 是可以的,因此您可以将其设为单例。不确定这是否会带来任何可衡量的性能优势。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-01-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-14
      相关资源
      最近更新 更多