Przeglądanie lub podgląd komunikatów

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

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

Typ komunikatów Dołączone?
Aktywne komunikaty Tak
Komunikaty przeniesione do kolejki wiadomości utraconych Nie
Zablokowane wiadomości Tak
Odroczone wiadomości Tak
Wygasłe komunikaty Może to być (zanim zostaną one przeniesione do kolejki dead-letter)
Zaplanowane wiadomości Tak dla kolejek. Nie dla subskrypcji

Komunikaty przeniesione do kolejki wiadomości niedostarczonych

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

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 „odśmiecania”. 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 przeniesione do kolejki wiadomości niedostarczonych po następnym wywołaniu operacji odbierania w kolejce lub subskrypcji. 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 zamierzone, ponieważ Peek to narzędzie diagnostyczne odzwierciedlające bieżący stan dziennika.

Zablokowane wiadomości

Zobacz również komunikaty, które zostały zablokowane i są obecnie przetwarzane przez innych odbiorców. Jednak ze względu na to, że funkcja Peek zwraca odłączoną migawkę, stan blokady komunikatu nie może być obserwowany w komunikatach pobranych za pomocą funkcji Peek.

Odroczone wiadomości

Odroczone komunikaty pozostają w głównej kolejce wraz ze wszystkimi innymi aktywnymi komunikatami (w przeciwieństwie do komunikatów dead-letter, które znajdują się w podkolejce), 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 sekwencyjnego w trakcie jego odraczania. Każdy odbiorca, który zna numer sekwencji odroczonego komunikatu, może później odebrać 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.

Podejrzyj interfejsy API

Operacja Peek jest dostępna dla kolejek, subskrypcji i ich kolejek komunikatów o błędnym dostarczeniu.

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 umieszczone w kolejce, a nie kolejność, w której komunikaty mogą zostać ostatecznie pobrane.

Można również przekazać parametr 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, aby kontynuować wyliczanie.

Maksymalna liczba komunikatów

Możesz określić maksymalną liczbę komunikatów, które mają zostać zwrócone przez operację podglądu. Nie ma jednak możliwości zagwarantowania minimalnego rozmiaru partii. Liczba zwracanych komunikatów zależy od kilku czynników, z których najważniejszym jest to, jak szybko sieć może przesyłać strumieniowo komunikaty do klienta.

Oto przykładowy fragment kodu do podejrzenia wszystkich komunikatów za pomocą zestawu SDK platformy .NET. Można SequenceNumber​ go użyć do śledzenia ostatnio podejrzanej wiadomości i rozpoczęcia przeglądania od następnej wiadomości.

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 to wynik podglądu kolejki zawierającej 13 komunikatów.

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.