.Net Core Azure 服务总线获取当前消息数

.NetCore Azure Servicebus get current message count

从队列中获取计数的旧方法是这样的:

 CloudQueue q = queueClient.GetQueueReference(QUEUE_NAME);
            q.FetchAttributes();
            qCnt = q.ApproximateMessageCount;

这不再适用于带有 AMQP 1.0 的 .netCore

我找不到获取消息计数的好方法。关于我遗漏的任何想法?

有一个 Microsoft.Azure.Management.ServiceBus 库,它是 preview 版本,100% 兼容 .Netcore。我们可以在这里得到更多detail

准备:

Registry Azure Active Directory application and assign Role

步骤:

创建一个.net core 控制台项目并添加以下代码。

 var tenantId = "tenantid";
            var context = new AuthenticationContext($"https://login.windows.net/{tenantId}");
            var clientId = "Client";
            var clientSecret = "Secret";
            var subscriptionId = "subscriptionId";
            var result =  context.AcquireTokenAsync(
                "https://management.core.windows.net/",
                new ClientCredential(clientId, clientSecret)).Result;

            var creds = new TokenCredentials(result.AccessToken);
            var sbClient = new ServiceBusManagementClient(creds)
            {
                SubscriptionId = subscriptionId
            };
            var queueParams = new QueueCreateOrUpdateParameters()
            {
                Location = "East Asia",
                EnablePartitioning = true
            };
           
            var queue = sbClient.Queues.ListAll("groupname", "namespace").ToList().FirstOrDefault(x => x.Name.Equals("queuename")); 
            var messagecount = queue.MessageCount;

从 Azure 门户,我们检查队列中的消息

Project.json 文件:

{
  "version": "1.0.0-*",
  "buildOptions": {
    "emitEntryPoint": true
  },

  "dependencies": {
    "Microsoft.Azure.Management.ServiceBus": "0.2.0-preview",
    "Microsoft.IdentityModel.Clients.ActiveDirectory": "3.13.9",
    "Microsoft.NETCore.App": {
      "type": "platform",
      "version": "1.0.1"
    }
  },

  "frameworks": {
    "netcoreapp1.0": {
      "imports": "dnxcore50"
    }
  }
}