有没有办法获取Azure主题订阅的当前消息数?
我看到SubscriptionDescription类具有MessageCount属性,但此类似乎仅用于创建订阅。我没有看到为现有订阅检索SubscriptionDescription对象的方法。
答案 0 :(得分:20)
我找到了我要找的东西:
var namespaceManager = NamespaceManager.CreateFromConnectionString(connectionString);
var subscriptionDesc = namespaceManager.GetSubscription(topicPath, subscriptionName);
long messageCount = subscriptionDesc.MessageCount;
答案 1 :(得分:1)
当将.NET Framework库与命名空间Microsoft.ServiceBus.Messaging
(nuget package)一起使用时,可接受的答案。
对于具有命名空间Microsoft.Azure.ServiceBus
(nuget package)的.NET Standard库,以下代码可以解决问题:
var managementClient = new ManagementClient(connectionString);
var runTimeInfo = await managementClient.GetSubscriptionRuntimeInfoAsync(topicPath, subscriptionName);
var messageCount = runTimeInfo.MessageCountDetails.ActiveMessageCount;
有关两个库之间差异的更多详细信息,请参见Microsoft.ServiceBus.Messaging vs Microsoft.Azure.ServiceBus。