检查与Azure Service Bus的连接

时间:2018-04-09 06:05:52

标签: azure azureservicebus azure-servicebus-topics

我有一些依赖于Azure Service Bus的代码。我使用以下代码创建了一个端点,用于检查Azure Service Bus主题的可用性:

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的问题。

1 个答案:

答案 0 :(得分:0)

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

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

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

如果与Service Bus的通信失败,将抛出异常(可能为MessagingCommunicationException

可以在请求之间重用NamespaceManager,这样就可以使它成为单例。不确定这是否会带来任何可衡量的性能优势。