从 ASP.NET Core 2.0 控制台应用程序监控 Azure 服务总线队列深度

Jef*_*ren 0 c# azureservicebus .net-core

我试图从 ASP.NET Core 2.0 控制台应用程序监视总队列深度和 DeadLetterMessages 队列深度。我看到过有关使用 NamespaceManager 类的参考,如下所示:

var ns = NamespaceManager.CreateFromConnectionString(sbConnectionString);
var queue = ns.GetQueue(queueName);
var count = queue.MessageCount;
var deadletterMessagesCount = queue.MessageCountDetails.DeadletterMessageCount;
Run Code Online (Sandbox Code Playgroud)

(摘自如何获取 Azure 服务总线队列中的死信消息计数?

但NamespaceManager位于Microsoft.ServiceBus中,与ASP.NET Core不兼容。

关于如何获取消息计数有什么建议吗?

r3v*_*rse 7

使用库Azure.Messaging.ServiceBus.Administration中的命名空间Azure.Messaging.ServiceBus

设置一个新的管理客户端,如下所示:

var client = new ServiceBusAdministrationClient("connectionstring");
Run Code Online (Sandbox Code Playgroud)

然后获取消息计数/深度,如下所示:

        var queuesRuntimeProperties = client.GetQueuesRuntimePropertiesAsync().AsPages();
        await foreach (var queuePage in queuesRuntimeProperties)
        {
            foreach (Azure.Messaging.ServiceBus.Administration.QueueRuntimeProperties currentQueue in queuePage.Values)
            {
                dict.Add(currentQueue.Name, currentQueue.TotalMessageCount.ToString());
            }
        }
Run Code Online (Sandbox Code Playgroud)