Поделиться через


Получение счетчиков сообщений

В этой статье показано, как получить количество сообщений для очереди или подписки. Знание числа активных сообщений помогает определить, создает ли очередь невыполненную работу, которая требует больше ресурсов для обработки, чем развернуто в настоящее время.

Счетчик Description
ActiveMessageCount Число сообщений в очереди или подписке, которые находятся в активном состоянии и готовы к доставке. К ним относятся отложенные сообщения.
ScheduledMessageCount Число сообщений в запланированном состоянии.
DeadLetterMessageCount Число сообщений в очереди недоставленных сообщений.
TransferMessageCount Число сообщений, ожидающих передачи в другую очередь или раздел.
TransferDeadLetterMessageCount Число сообщений, которые не удалось перенести в другую очередь или раздел и которые были перемещены в очередь недоставленных сообщений.

Если приложению требуется масштабировать ресурсы в зависимости от длины очереди, оно должно делать это размеренно. Получение данных счетчиков сообщений является ресурсоемкой операцией в брокере обмена сообщениями, и частое ее выполнение напрямую негативно влияет на производительность сущности.

Еще одна полезная метрика для масштабирования — это время между отправкой последнего сообщения и его обработкой, также известной как "критическое время". Это полезно для сценариев, когда очередь может содержать тысячи сообщений в ней, но обработка достаточно быстра для поддержания, давая "критическое время" всего за пару секунд, что может быть более чем достаточно для того, чтобы что-то вроде конечной точки отправки электронной почты. Сторонние библиотеки, такие как NServiceBus , выдают эти и другие полезные метрики через OpenTelemetry.

Примечание.

Сообщения, отправляемые в разделе служебной шины, переадресовываются тем, кто подписался на этот раздел. Таким образом, количество активных сообщений в самом разделе равно 0, так как эти сообщения были успешно переадресованы подписчикам. Получите количество сообщений для подписки и убедитесь, что оно больше 0. Даже если вы видите сообщения для подписки, они фактически хранятся в хранилище, принадлежащем разделу. Если вы посмотрите на подписки, то они будут иметь ненулевое число сообщений, которые способствуют хранилищу, используемому разделом.

Используя портал Azure

Перейдите к пространству имен и выберите очередь. Счетчики сообщений отображаются на странице Обзор очереди.

Снимок экрана: страница обзора очереди с выделенным разделом

Перейдите к пространству имен, выберите раздел, а затем подписку для раздела. Счетчики сообщений отображаются на странице Обзор очереди.

Снимок экрана: страница обзора подписки раздела с выделенным разделом

Использование Azure CLI

Используйте команду az servicebus queue show, чтобы получить сведения о количестве сообщений для очереди, как показано в следующем примере.

az servicebus queue show --resource-group myresourcegroup \
    --namespace-name mynamespace \
    --name myqueue \
    --query countDetails

Ниже приведен пример выходных данных.

ActiveMessageCount    DeadLetterMessageCount    ScheduledMessageCount    TransferMessageCount    TransferDeadLetterMessageCount
--------------------  ------------------------  -----------------------  ----------------------  --------------------------------
0                     0                         0                        0                       0

Используйте команду az servicebus topic subscription show, чтобы получить сведения о количестве сообщений для подписки, как показано в следующем примере.

az servicebus topic subscription show --resource-group myresourcegroup \
    --namespace-name mynamespace \
    --topic-name mytopic \
    --name mysub \
    --query countDetails

Использование Azure PowerShell

С помощью PowerShell можно получить сведения о количестве сообщений для очереди следующим образом:

$queueObj=Get-AzServiceBusQueue -ResourceGroup myresourcegroup `
                    -NamespaceName mynamespace `
                    -QueueName myqueue 

$queueObj.CountDetails

Пример выходных данных:

ActiveMessageCount             : 7
DeadLetterMessageCount         : 1
ScheduledMessageCount          : 3
TransferMessageCount           : 0
TransferDeadLetterMessageCount : 0

Сведения о количестве сообщений для подписки можно получить следующим образом:

$topicObj= Get-AzServiceBusSubscription -ResourceGroup myresourcegroup `
                -NamespaceName mynamespace `
                -TopicName mytopic `
                -SubscriptionName mysub

$topicObj.CountDetails

Возвращаемый объект MessageCountDetails имеет следующие свойства: ActiveMessageCount, DeadLetterMessageCount, ScheduledMessageCount, TransferDeadLetterMessageCount, TransferMessageCount.

Следующие шаги

Опробуйте примеры на выбранном языке, чтобы изучить возможности Служебной шины Azure.

Примеры для более ранних клиентских библиотек .NET и Java см. ниже.

30 сентября 2026 г. мы удалим библиотеки пакета SDK Служебная шина Azure WindowsAzure.ServiceBus, Microsoft.Azure.ServiceBus и com.microsoft.azure.servicebus, которые не соответствуют рекомендациям по пакету SDK Azure. Мы также завершим поддержку протокола SBMP, поэтому вы больше не сможете использовать этот протокол после 30 сентября 2026 года. Перейдите в последние библиотеки пакета SDK Azure, которые предлагают критически важные обновления системы безопасности и улучшенные возможности до этой даты.

Хотя старые библиотеки по-прежнему могут использоваться после 30 сентября 2026 года, они больше не будут получать официальную поддержку и обновления от Майкрософт. Дополнительные сведения см. в объявлении о выходе на пенсию в службу поддержки.