Udostępnij za pośrednictwem


Przeglądanie lub przeglądanie komunikatów

Przeglądanie komunikatów lub podglądanie umożliwia klientowi usługi Service Bus wyliczanie wszystkich komunikatów w kolejce lub subskrypcji na potrzeby diagnostyki i debugowania.

Operacja Podgląd w kolejce lub subskrypcji zwraca najwyżej żądaną liczbę komunikatów. W poniższej tabeli przedstawiono typy komunikatów zwracanych przez operację Podgląd.

Typ komunikatów Zawarte?
Aktywne komunikaty Tak
Wiadomości z komunikatami utraconymi Nie.
Zablokowane komunikaty Tak
Komunikaty odroczone Tak
Wygasłe komunikaty Może to być (zanim zostaną one utracone)
Zaplanowane komunikaty Tak w przypadku kolejek. Nie w przypadku subskrypcji

Wiadomości z komunikatami utraconymi

Aby zajrzeć do utraconych komunikatów kolejki lub subskrypcji, należy uruchomić operację podglądu w kolejce utraconych wiadomości skojarzonych z kolejką lub subskrypcją. Aby uzyskać więcej informacji, zobacz Uzyskiwanie dostępu do kolejek utraconych wiadomości.

Wygasłe komunikaty

Wygasłe komunikaty mogą zostać uwzględnione w wynikach zwróconych z operacji Podgląd. Zużyte i wygasłe komunikaty są czyszczone przez uruchomienie asynchronicznego "odzyskiwania pamięci". Ten krok może niekoniecznie wystąpić natychmiast po wygaśnięciu komunikatów. Dlatego operacja wglądu może zwracać komunikaty, które już wygasły. Te komunikaty zostaną usunięte lub nieaktywne po wywołaniu operacji odbierania w kolejce lub subskrypcji przy następnym uruchomieniu. Należy pamiętać o tym zachowaniu podczas próby odzyskania odroczonych komunikatów z kolejki.

Wygasły komunikat nie kwalifikuje się już do regularnego pobierania za pomocą innych środków, nawet jeśli jest zwracany przez Peek. Zwracanie tych komunikatów jest zgodne z projektem, ponieważ Peek to narzędzie diagnostyczne odzwierciedlające bieżący stan dziennika.

Zablokowane komunikaty

Zobacz również komunikaty, które zostały zablokowane i są obecnie przetwarzane przez innych odbiorników. Jednak ze względu na to, że funkcja Peek zwraca odłączone migawki, stan blokady komunikatu nie może być obserwowany na podglądzie komunikatów.

Komunikaty odroczone

Odroczone komunikaty pozostają w głównej kolejce wraz ze wszystkimi innymi aktywnymi komunikatami (w przeciwieństwie do komunikatów utraconych, które działają w podqueue), ale nie mogą być już odbierane przy użyciu zwykłych operacji odbierania. Komunikaty odroczone można odnaleźć za pośrednictwem przeglądania komunikatów, jeśli aplikacja utraci ich śledzenie.

Aby pobrać komunikat odroczony, jego właściciel jest odpowiedzialny za zapamiętanie numeru sekwencji podczas jego odchyłania. Każdy odbiornik, który zna numer sekwencji komunikatu odroczonego, może później odbierać komunikat przy użyciu metod odbierania, które przyjmują numer sekwencji jako parametr. Aby uzyskać więcej informacji na temat numerów sekwencji, zobacz Sekwencjonowanie komunikatów i znaczniki czasu.

Zobacz interfejsy API

Podgląd działa w kolejkach, subskrypcjach i kolejkach utraconych komunikatów.

Po wielokrotnym wywołaniu operacja podglądu wylicza wszystkie komunikaty w kolejce lub subskrypcji w kolejności od najniższego dostępnego numeru sekwencji do najwyższego. Jest to kolejność, w której komunikaty zostały w kolejce, a nie kolejność, w której komunikaty mogą zostać ostatecznie pobrane.

Można również przekazać element SequenceNumber do operacji podglądu. Służy do określania, skąd zacząć zaglądać. Możesz wykonywać kolejne wywołania operacji podglądu bez określania parametru do wyliczenia dalej.

Maksymalna liczba komunikatów

Możesz określić maksymalną liczbę komunikatów, które mają zostać zwrócone przez operację wglądu. Nie ma jednak możliwości zagwarantowania minimalnego rozmiaru partii. Liczba zwracanych komunikatów zależy od kilku czynników, które najbardziej wpływają na szybkość transmisji strumieniowej komunikatów przez sieć do klienta. 

Oto przykładowy fragment kodu przedstawiający wszystkie komunikaty za pomocą zestawu SDK platformy .NET. Można SequenceNumber​ go użyć do śledzenia ostatniego podglądu wiadomości i rozpoczęcia przeglądania w następnym komunikacie.

using Azure.Messaging.ServiceBus;

// Create a Service Bus client for your namespace
ServiceBusClient client = new ServiceBusClient("NAMESPACECONNECTIONSTRING");

// Create Service Bus receiver for your queue in the namespace
ServiceBusReceiver receiver = client.CreateReceiver("QUEUENAME");

// Peek operation with max count set to 5
var peekedMessages = await receiver.PeekMessagesAsync(maxMessages: 5);

// Keep receiving while there are messages in the queue
while (peekedMessages.Count > 0)
{
    int counter = 0; // To get the sequence number of the last peeked message
    int countPeekedMessages = peekedMessages.Count;

    if (countPeekedMessages > 0)
    { 
        // For each peeked message, print the message body
        foreach (ServiceBusReceivedMessage msg in peekedMessages)
        {
            Console.WriteLine(msg.Body);
            counter++;
        }
        Console.WriteLine("Peek round complete");
        Console.WriteLine("");
    }

    // Start receiving from the message after the last one
    var fromSeqNum = peekedMessages[counter-1].SequenceNumber + 1;
    peekedMessages = await receiver.PeekMessagesAsync(maxMessages: 5, fromSequenceNumber: fromSeqNum);
}

Poniższe przykładowe dane wyjściowe pochodzą z zaglądania do kolejki z 13 komunikatami w niej.

Message 1
Message 2
Message 3
Message 4
Message 5
Peek round complete

Message 6
Message 7
Message 8
Message 9
Message 10
Peek round complete

Message 11
Message 12
Message 13
Peek round complete

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 tutaj:

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.