Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.NetCore Azure Servicebus获取当前邮件计数_Azure_Asp.net Core_Azureservicebus - Fatal编程技术网

.NetCore Azure Servicebus获取当前邮件计数

.NetCore Azure Servicebus获取当前邮件计数,azure,asp.net-core,azureservicebus,Azure,Asp.net Core,Azureservicebus,从队列中获取计数的旧方法如下: CloudQueue q = queueClient.GetQueueReference(QUEUE_NAME); q.FetchAttributes(); qCnt = q.ApproximateMessageCount; 这不再适用于带有AMQP 1.0的.netCore 我没有找到一个好方法来获取消息计数。关于我遗漏的内容有什么想法吗?有一个Microsoft.Azure.Management.Servic

从队列中获取计数的旧方法如下:

 CloudQueue q = queueClient.GetQueueReference(QUEUE_NAME);
            q.FetchAttributes();
            qCnt = q.ApproximateMessageCount;
这不再适用于带有AMQP 1.0的.netCore


我没有找到一个好方法来获取消息计数。关于我遗漏的内容有什么想法吗?

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

准备:

步骤:

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

 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 poratal,我们检查队列中的消息

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"
    }
  }
}

这看起来不是Azure Service Bus代码段,而是存储队列。当然,获取ServiceBus中队列中的项目数的等效函数是什么?Google“Azure Service Bus队列获取消息计数”从字面上看,第一个结果是对您的问题的一个如此回答:D您上面引用的示例适用于存储队列而不是servicebus,下面的答案是正确的,因为它解释了您需要获得oauth令牌才能获得计数。对不起,伙计,但您必须仔细阅读。Microsoft.ServiceBus.NamespaceManager不是存储队列,而是ASB的完整.NET framework客户端。有多种方法可以使用名称空间管理器或带有AAD的管理库对cat:.NET Framework客户端进行蒙皮。如果你通过AAD,你需要一个代币。如果您有一个连接字符串(包含SAS令牌),则不需要AAD。上述方法有效。对于偶然发现此问题的任何其他人,groupname是您的资源组名称,NameSpace是队列命名空间。我正在向队列发送消息,如queueClient=new queueClient(ServiceBusConnectionString,QueueName,ReceiveMode.PeekLock);//创建新的代理消息以发送到队列var message=new message($“message{precheckMessage}”);//将消息发送到队列等待queueClient.SendAsync(消息);当我推送消息时,有没有一种简单的方法来获取QueueID?像一个上下文?如果使用上面的代码,我们可以得到queueid easy
var queue=sbClient.Queues.ListAll(“groupname”,“namespace”).ToList().FirstOrDefault(x=>x.Name.Equals(“queuename”)
var id=queue.id
然后我们可以获得队列id为/subscriptions/subscriptionId/resourceGroups/resource groupname/providers/Microsoft.ServiceBus/namespaces/servicebusname/queues/queuename