Nic*_*ren 3 azureservicebus azure-servicebus-queues .net-core asp.net-core
我目前的工作,我在这里使用Microsoft.Azure.Servicebus 1.0版NuGet包基金的.Net核心项目: https://github.com/Azure/azure-service-bus
我遇到的问题是我找不到获取队列数量的活动消息的方法.使用ServicebusNamespace.NamespaceManager,使用.Net框架,引用队列并使用.ActiveMessageCount,这很容易
有没有人知道在这个带有.Net Core 1.1的库中是否可以通过其他方式实现这一点?
小智 6
现在可以使用最新版本的Service Bus库(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.)
Run Code Online (Sandbox Code Playgroud)
编辑:添加代码示例
编辑2:添加了主题和订阅用法的代码示例.
.NET Standard客户端(Microsoft.Azure.ServiceBus)故意不提供管理操作.它声明管理操作不应在运行时执行.管理运作极其缓慢.
有没有人知道在这个带有.Net Core 1.1的库中是否可以通过其他方式实现这一点?
对的,这是可能的.而不是NamespaceManager旧客户端(WindowsAzure.ServiceBus)可用的那个,有一个ServiceBus管理库(Microsoft.Azure.Management.ServiceBus.Fluent)
您需要执行以下操作:
ServiceBusManagerServiceBusManager.NamespacesServiceBusManager.Namespaces.Queues/ 下找到您感兴趣的实体来过滤掉它ServiceBusManager.Namespaces.Topics.对于订阅,您需要找到一个via ITopic对象.IQueue,ITopic或ISubscription)之后,您将能够访问消息计数.我不是这种方法的忠实粉丝.而不是每个开发人员重新发明这个轮子,Azure Service Bus团队应该提供一个帮助库来替换NamespaceManger.您始终可以针对已关闭的问题提出问题或投票.
更新
管理操作在版本3.1.1中引入PR#481.
| 归档时间: |
|
| 查看次数: |
658 次 |
| 最近记录: |