我目前的工作,我使用Microsoft.Azure.Servicebus 1.0版NuGet包这里基金净核心项目:https://github.com/Azure/azure-service-bus
我的问题是,我找不到任何方法来获得活动消息的队列数。这曾经是与使用ServicebusNamespace.NamespaceManager Net框架很容易的,指的是队列和使用.ActiveMessageCount
有谁知道这是否可能以其他方式在这个库的.Net核心1.1吗?
在.NET Standard客户端(Microsoft.Azure.ServiceBus
)是故意不提供管理操作。它指出,管理操作不应该在运行时进行。管理操作是非常缓慢的。
有谁知道这是否可能以其他方式在这个库的.Net核心1.1吗?
对的,这是可能的。相反,这是可用的旧的客户端(NamespaceManager
)的WindowsAzure.ServiceBus
的,有一个ServiceBus管理库(Microsoft.Azure.Management.ServiceBus.Fluent
)
你需要做到以下几点:
ServiceBusManager
ServiceBusManager.Namespaces
ServiceBusManager.Namespaces.Queues
/ ServiceBusManager.Namespaces.Topics
它定位感兴趣的实体。对于订阅,您需要通过ITopic
对象进行查找。IQueue
,ITopic
,或ISubscription
),你就可以访问消息计数。我不是这种方法的大风扇。不是每个开发者重新发明轮子此,Azure的服务总线团队应该提供一个辅助库替换NamespaceManger
。您可以随时raise an issue或投票给was closed的问题。
更新
管理操作在版本3.1.1 PR #481引回。
它采用了最新版本的服务总线库现在是可能的(3.1.1)https://www.nuget.org/packages/Microsoft.Azure.ServiceBus/
using Microsoft.Azure.ServiceBus;
using Microsoft.Azure.ServiceBus.Management;
var client = new ManagementClient(connectionString);
var queue = await client.GetQueueRuntimeInfoAsync(queuePath);
var counts = queue.MessageCountDetails;
var subs = await client.GetSubscriptionRuntimeInfoAsync(topic, subscription);
var countForThisSubscription = subs.MessageCount; //// (Comes back as a Long.)
编辑:添加的代码示例
编辑2:添加了主题和订阅使用的代码示例。