从队列获取计数的旧方法是这样的:
CloudQueue q = queueClient.GetQueueReference(QUEUE_NAME);
q.FetchAttributes();
qCnt = q.ApproximateMessageCount;
这不再适用于带有 AMQP 1.0 的 .netCore
我没有找到获取消息计数的好方法。关于我缺少什么有什么想法吗?
最佳答案
有一个 Microsoft.Azure.Management.ServiceBus Libary,它是一个预览版本,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"
}
}
}
关于azure - .Net Core Azure服务总线获取当前消息计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43900813/