Bläddra eller granska meddelanden
Med meddelandebläddring, eller genom att titta på, kan en Service Bus-klient räkna upp alla meddelanden i en kö eller en prenumeration i diagnostik- och felsökningssyfte.
Peek-åtgärden i en kö eller en prenumeration returnerar högst det begärda antalet meddelanden. I följande tabell visas de typer av meddelanden som returneras av peek-åtgärden.
Typ av meddelanden | Inkluderad? |
---|---|
Aktiva meddelanden | Ja |
Meddelanden med obeställbara bokstäver | Nej |
Låsta meddelanden | Ja |
Uppskjutna meddelanden | Ja |
Meddelanden som har upphört att gälla | Kan vara (innan de är obeställbara) |
Schemalagda meddelanden | Ja för köer. Nej för prenumerationer |
Meddelanden med obeställbara bokstäver
Om du vill titta på meddelanden med obeställbara bokstäver i en kö eller prenumeration ska granskningsåtgärden köras i kön med obeställbara meddelanden som är associerad med kön eller prenumerationen. Mer information finns i komma åt köer med obeställbara meddelanden.
Meddelanden som har upphört att gälla
Meddelanden som har upphört att gälla kan inkluderas i resultaten som returneras från peek-åtgärden. Förbrukade och utgångna meddelanden rensas av en asynkron "skräpinsamling"-körning. Det här steget kanske inte nödvändigtvis inträffar omedelbart efter att meddelanden har upphört att gälla. Därför kan en granskningsåtgärd returnera meddelanden som redan har upphört att gälla. Dessa meddelanden tas bort eller får obeställbara meddelanden när en mottagningsåtgärd anropas i kön eller prenumerationen nästa gång. Tänk på det här beteendet när du försöker återställa uppskjutna meddelanden från kön.
Ett meddelande som har upphört att gälla är inte längre berättigat till regelbunden hämtning på något annat sätt, även när det returneras av Peek. Att returnera dessa meddelanden är avsiktligt eftersom Peek är ett diagnostikverktyg som återspeglar loggens aktuella tillstånd.
Låsta meddelanden
Peek returnerar också meddelanden som har låsts och som för närvarande bearbetas av andra mottagare. Men eftersom Peek returnerar en frånkopplad ögonblicksbild går det inte att observera låstillståndet för ett meddelande på övertittade meddelanden.
Uppskjutna meddelanden
Uppskjutna meddelanden finns kvar i huvudkön tillsammans med alla andra aktiva meddelanden (till skillnad från meddelanden med obeställbara meddelanden som finns i en underfråga), men de kan inte längre tas emot med hjälp av de vanliga mottagningsåtgärderna. Uppskjutna meddelanden kan identifieras via meddelandebläddring om ett program förlorar kontrollen över dem.
För att hämta ett uppskjutet meddelande ansvarar ägaren för att komma ihåg sekvensnumret när det defersar det. En mottagare som känner till sekvensnumret för ett uppskjutet meddelande kan senare ta emot meddelandet med hjälp av mottagningsmetoder som tar sekvensnumret som en parameter. Mer information om sekvensnummer finns i Meddelandesekvensering och tidsstämplar.
Granska API:er
Peek fungerar på köer, prenumerationer och deras köer med obeställbara meddelanden.
När den anropas upprepade gånger räknas alla meddelanden i kön eller prenumerationen upp i ordning från det lägsta tillgängliga sekvensnumret till det högsta. Det är i den ordning meddelandena har angetts, inte i vilken ordning meddelanden så småningom kan hämtas.
Du kan också skicka en SequenceNumber till en tittåtgärd. Den används för att avgöra var du ska börja titta från. Du kan göra efterföljande anrop till granskningsåtgärden utan att ange parametern för att räkna upp ytterligare.
Maximalt antal meddelanden
Du kan ange det maximala antalet meddelanden som du vill att granskningsåtgärden ska returnera. Men det finns inget sätt att garantera en minsta storlek för batchen. Antalet returnerade meddelanden beror på flera faktorer som den mest effektfulla är hur snabbt nätverket kan strömma meddelanden till klienten.
Här är ett exempelfragment för att granska alla meddelanden med .NET SDK. SequenceNumber
Kan användas för att spåra det senast kikade meddelandet och börja bläddra i nästa meddelande.
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);
}
Följande exempelutdata är från att titta på en kö med 13 meddelanden i den.
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
Relaterat innehåll
Prova exemplen på det språk du väljer för att utforska Azure Service Bus-funktioner.
- Azure Service Bus-klientbiblioteksexempel för .NET (senaste) – Exempel på att skicka och ta emot meddelanden .
- Azure Service Bus-klientbiblioteksexempel för Java (senaste) - Titta på ett meddelandeexempel
- Exempel på Azure Service Bus-klientbibliotek för Python - receive_peek.py exempel
- Exempel på Azure Service Bus-klientbibliotek för JavaScript - browseMessages.js exempel
- Azure Service Bus-klientbiblioteksexempel för TypeScript-browseMessages.ts - exempel
Hitta exempel för de äldre .NET- och Java-klientbiblioteken här:
- Azure Service Bus-klientbiblioteksexempel för .NET (äldre)Exempel på - meddelandebläddring (titt)
- Azure Service Bus-klientbiblioteksexempel för Java (äldre)Exempel på - meddelande bläddra.
Den 30 september 2026 drar vi tillbaka Azure Service Bus SDK-biblioteken WindowsAzure.ServiceBus, Microsoft.Azure.ServiceBus och com.microsoft.azure.servicebus, som inte följer Riktlinjerna för Azure SDK. Vi kommer också att avsluta stödet för SBMP-protokollet, så du kommer inte längre att kunna använda det här protokollet efter den 30 september 2026. Migrera till de senaste Azure SDK-biblioteken, som erbjuder kritiska säkerhetsuppdateringar och förbättrade funktioner, före det datumet.
Även om de äldre biblioteken fortfarande kan användas efter den 30 september 2026 får de inte längre officiell support och uppdateringar från Microsoft. Mer information finns i meddelandet om supportavgång.