使用新的 Azure.messaging.servicebus 获取活动消息计数

问题描述 投票:0回答:2

是否有任何选项可以使用新的 Azure.messaging.servicebus 包检索队列的活动消息计数?

使用旧的 Microsoft.azure.servicebus,您可以使用公开 GetQueueRuntimeInfoAsync(String, CancellationToken)ManagementClient

var managementClient = new ManagementClient("queue connection string"));
var runtimeInfo = await managementClient.GetQueueRuntimeInfoAsync("queueName");

var messagesInQueueCount = runtimeInfo.MessageCountDetails.ActiveMessageCount;

有没有办法实现类似的目标? 谢谢你。

c# azure .net-core azureservicebus azure-servicebus-queues
2个回答
2
投票

你可以。起点是类似的管理客户端,

ServiceBusManagementClient
。它公开了访问实体运行时信息的方法,例如
GetQueueRuntimePropertiesAsync()
,它返回
QueueRuntimeProperties
QueueRuntimeProperties
对象拥有所有信息,包括
ActiveMessageCount


0
投票

令人惊讶的是,找到我正在寻找的解决方案是多么困难,因为很多东西不断被弃用,并且是一个不断变化的目标。我最终通过逐步导入不同的库并在调试模式下逐步完成一些库偶然发现了这一点:

from azure.servicebus.management import ServiceBusAdministrationClient

CONNECTION_STR = 'Endpoint=sb://mygroupname.servicebus.windows.net/;SharedAccessKeyName=sbnamespacerule01;SharedAccessKey=bla bla bla Wm3+ASbGYYqQU='
QUEUE_NAME = 'my-queue'

management_client  = ServiceBusAdministrationClient.from_connection_string(conn_str=CONNECTION_STR, logging_enable=True)
queue_runtime_info = management_client.get_queue_runtime_properties(QUEUE_NAME)

queue_length = queue_runtime_info.total_message_count

print(f"Queue Length: {queue_length}")

# The following attributes are available for queue_runtime_info:

# dead_letter_message_count: 0
# name: 'classification-queue'
# scheduled_message_count: 0
# size_in_bytes: 0
# total_message_count: 0
# transfer_dead_letter_message_count: 0
# transfer_message_count: 0

我希望它对某人有帮助,我在这上面花了太多钱,甚至没有提及。

© www.soinside.com 2019 - 2024. All rights reserved.