Sdílet prostřednictvím


Procházení nebo náhled zpráv

Procházení zpráv nebo prohlížení zpráv umožňuje klientovi služby Service Bus vytvořit výčet všech zpráv ve frontě nebo odběru pro účely diagnostiky a ladění.

Operace Náhled ve frontě nebo odběru vrátí maximálně požadovaný počet zpráv. V následující tabulce jsou uvedeny typy zpráv, které vrací operace Náhled.

Typ zpráv Zahrnutý?
Aktivní zprávy Ano
Nedoručené zprávy No
Uzamčené zprávy Ano
Odložené zprávy Ano
Zprávy s vypršenou platností Může to být (před tím, než budou nedoručené)
Plánované zprávy Ano pro fronty. Ne pro předplatná

Nedoručené zprávy

Pokud se chcete podívat na nedoručené zprávy fronty nebo odběru, měla by se operace náhledu spustit ve frontě nedoručených zpráv přidružených k frontě nebo odběru. Další informace najdete v tématu o přístupu k frontám nedoručených zpráv.

Zprávy s vypršenou platností

Zprávy s vypršenou platností můžou být zahrnuty do výsledků vrácených z operace Náhled. Spotřebované a prošlé zprávy se vyčistí asynchronním spuštěním uvolňování paměti. Tento krok nemusí nutně nastat okamžitě po vypršení platnosti zpráv. Proto může operace náhledu vrátit zprávy, jejichž platnost už vypršela. Tyto zprávy budou při příštím vyvolání operace příjmu ve frontě nebo odběru odebrány nebo nedoručené. Při pokusu o obnovení odložených zpráv z fronty mějte toto chování na paměti.

Zpráva s vypršenou platností už nemá nárok na pravidelné načítání žádným jiným způsobem, i když je vrácena náhledem. Vrácení těchto zpráv je záměrně, protože Náhled je diagnostický nástroj, který odráží aktuální stav protokolu.

Uzamčené zprávy

Náhled také vrátí zprávy, které byly uzamčeny a které právě zpracovávají ostatní příjemci. Vzhledem k tomu, že náhled vrátí odpojený snímek, stav uzamčení zprávy se nedá pozorovat u náhledových zpráv.

Odložené zprávy

Odložené zprávy zůstávají v hlavní frontě spolu se všemi ostatními aktivními zprávami (na rozdíl od zpráv s nedoručenými písmeny, které jsou v podkateře), ale nelze je přijímat pomocí běžných operací příjmu. Odložené zprávy je možné zjistit prostřednictvím procházení zpráv, pokud aplikace ztratí přehled o nich.

Pokud chcete načíst odloženou zprávu, je její vlastník zodpovědný za zapamatování pořadového čísla při jeho odvrácení. Každý příjemce, který zná pořadové číslo odložené zprávy, může později přijmout zprávu pomocí metod příjmu, které přebírají pořadové číslo jako parametr. Další informace o sekvenčních číslech naleznete v tématu Pořadí zpráv a časové razítka.

Náhled rozhraní API

Náhled funguje ve frontách, předplatných a jejich frontách nedoručených zpráv.

Při opakovaném vyvolání operace náhledu vyčíslí všechny zprávy ve frontě nebo odběru v pořadí od nejnižšího dostupného pořadového čísla na nejvyšší. Jedná se o pořadí, ve kterém byly zprávy vloženy do fronty, nikoli pořadí, ve kterém se můžou zprávy nakonec načíst.

Funkci SequenceNumber můžete také předat do operace náhledu. Používá se k určení, odkud začít nahlédnout. Následná volání operace náhledu můžete provést bez zadání parametru pro další výčet.

Maximální počet zpráv

Můžete zadat maximální počet zpráv, které má operace náhledu vrátit. Neexistuje ale žádný způsob, jak zaručit minimální velikost dávky. Počet vrácených zpráv závisí na několika faktorech, z nichž nejvýraznější je, jak rychle může síť streamovat zprávy klientovi. 

Tady je příklad fragmentu kódu pro náhled všech zpráv pomocí sady .NET SDK. SequenceNumber​ Dá se použít ke sledování poslední náhledové zprávy a zahájení procházení na další zprávě.

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);
}

Následující ukázkový výstup spočívá v náhledu fronty s 13 zprávami.

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

Vyzkoušejte ukázky v jazyce podle vašeho výběru a prozkoumejte funkce služby Azure Service Bus.

Ukázky pro starší klientské knihovny .NET a Java najdete tady:

30. září 2026 vyřadíme knihovny sady SDK služby Azure Service Bus pro WindowsAzure.ServiceBus, Microsoft.Azure.ServiceBus a com.microsoft.azure.servicebus, které nevyhovují pokynům sady Azure SDK. Také ukončíme podporu protokolu SBMP, takže tento protokol už nebudete moct používat po 30. září 2026. Před tímto datem migrujte na nejnovější knihovny sady Azure SDK, které nabízejí důležité aktualizace zabezpečení a vylepšené funkce.

I když starší knihovny je možné používat i po 30. září 2026, nebudou už od Microsoftu dostávat oficiální podporu a aktualizace. Další informace najdete v oznámení o vyřazení podpory.