Udostępnij za pośrednictwem


Pobieranie liczników komunikatów

W tym artykule przedstawiono różne sposoby pobierania liczby komunikatów dla kolejki lub subskrypcji. Znajomość liczby aktywnych komunikatów jest przydatna podczas określania, czy kolejka tworzy listę prac, która wymaga więcej zasobów do przetworzenia niż to, co zostało obecnie wdrożone.

Licznik opis
ActiveMessageCount Liczba komunikatów w kolejce lub subskrypcji, które są w stanie aktywnym i są gotowe do dostarczenia. Obejmuje to komunikaty odroczone.
ScheduledMessageCount Liczba komunikatów w stanie zaplanowanym.
DeadLetterMessageCount Liczba komunikatów w kolejce utraconych komunikatów.
TransferMessageCount Liczba komunikatów oczekujących na przeniesienie do innej kolejki lub tematu.
TransferDeadLetterMessageCount Liczba komunikatów, które nie mogły zostać przeniesione do innej kolejki lub tematu i zostały przeniesione do kolejki utraconych komunikatów.

Jeśli aplikacja chce skalować zasoby na podstawie długości kolejki, powinna to zrobić za pomocą mierzonego tempa. Pozyskiwanie liczników komunikatów jest kosztowną operacją wewnątrz brokera komunikatów i wykonywanie jej często bezpośrednio i niekorzystnie wpływa na wydajność jednostki.

Kolejną przydatną metryczką do rozważenia na potrzeby skalowania jest czas między wysłaniem najnowszej wiadomości a przetworzeniem, nazywanym również "czasem krytycznym". Jest to przydatne w scenariuszach, w których kolejka może zawierać tysiące komunikatów, ale przetwarzanie jest wystarczająco szybkie, aby nadążyć, dając "krytyczny czas" zaledwie kilka sekund, co może być więcej niż wystarczające dla czegoś takiego jak punkt końcowy wysyłania wiadomości e-mail. Biblioteki innych firm, takie jak NServiceBus , emitują te i inne przydatne metryki za pośrednictwem technologii OpenTelemetry.

Uwaga

Komunikaty wysyłane do tematu usługi Service Bus są przekazywane do subskrypcji tego tematu. Tak więc liczba aktywnych komunikatów w samym temacie wynosi 0, ponieważ te komunikaty zostały pomyślnie przekazane do subskrypcji. Pobierz liczbę komunikatów w subskrypcji i sprawdź, czy jest ona większa niż 0. Mimo że w subskrypcji są wyświetlane komunikaty, są one rzeczywiście przechowywane w magazynie należącym do tematu. Jeśli spojrzysz na subskrypcje, będą one miały liczbę komunikatów innych niż zero, które przyczyniają się do magazynu używanego przez temat.

Przy użyciu witryny Azure Portal

Przejdź do przestrzeni nazw i wybierz kolejkę. Na stronie Przegląd kolejki są wyświetlane liczniki komunikatów.

Zrzut ekranu przedstawiający stronę Przegląd kolejki z wyróżnioną sekcją Liczba komunikatów.

Przejdź do przestrzeni nazw, wybierz temat, a następnie wybierz subskrypcję tematu. Na stronie Przegląd kolejki są wyświetlane liczniki komunikatów.

Zrzut ekranu przedstawiający stronę Przegląd subskrypcji tematu z wyróżnioną sekcją Liczba komunikatów.

Korzystanie z interfejsu wiersza polecenia platformy Azure

az servicebus queue show Użyj polecenia , aby uzyskać szczegóły liczby komunikatów dla kolejki, jak pokazano w poniższym przykładzie.

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

Oto przykładowe dane wyjściowe:

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

az servicebus topic subscription show Użyj polecenia , aby uzyskać szczegóły liczby komunikatów dla subskrypcji, jak pokazano w poniższym przykładzie.

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

Korzystanie z programu Azure PowerShell

Za pomocą programu PowerShell można uzyskać szczegóły liczby komunikatów dla kolejki w następujący sposób:

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

$queueObj.CountDetails

Oto przykładowe dane wyjściowe:

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

Możesz uzyskać szczegóły liczby komunikatów dla subskrypcji w następujący sposób:

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

$topicObj.CountDetails

Zwrócony MessageCountDetails obiekt ma następujące właściwości: ActiveMessageCount, , DeadLetterMessageCountScheduledMessageCount, TransferDeadLetterMessageCount, TransferMessageCount.

Następne kroki

Wypróbuj przykłady w wybranym języku, aby zapoznać się z funkcjami usługi Azure Service Bus.

Znajdź przykłady dla starszych bibliotek klienckich .NET i Java poniżej:

30 września 2026 r. wycofamy biblioteki zestawu SDK usługi Azure Service Bus WindowsAzure.ServiceBus, Microsoft.Azure.ServiceBus i com.microsoft.azure.servicebus, które nie są zgodne z wytycznymi dotyczącymi zestawu Azure SDK. Zakończymy również obsługę protokołu SBMP, więc nie będzie można już używać tego protokołu po 30 września 2026 r. Przeprowadź migrację do najnowszych bibliotek zestawu Azure SDK, które oferują krytyczne aktualizacje zabezpieczeń i ulepszone możliwości przed tą datą.

Mimo że starsze biblioteki mogą być nadal używane poza 30 września 2026 r., nie będą już otrzymywać oficjalnej pomocy technicznej i aktualizacji od firmy Microsoft. Aby uzyskać więcej informacji, zobacz ogłoszenie o wycofaniu pomocy technicznej.