.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