Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Meddelandebläddring, eller meddelandegranskning, gör det möjligt för en Service Bus-klient att lista 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 | Ingår? |
|---|---|
| Aktiva meddelanden | Ja |
| Felköade meddelanden | Nej |
| Låsta meddelanden | Ja |
| Uppskjutna meddelanden | Ja |
| Utgångna meddelanden | Kan vara (innan de hamnar i dead-letter-kön) |
| Schemalagda meddelanden | Ja för köer. Nej för prenumerationer |
Meddelanden i dead letter-kön
Om du vill titta på meddelanden för obeställbara meddelanden i en kö eller prenumeration ska peek-åtgärden köras på kön för obeställbara meddelanden som är associerad med kön eller prenumerationen. Mer information finns i åtkomst till dead letter-köer.
Utgångna meddelanden
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 "garbage collection"-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 peek-åtgärd returnera meddelanden som redan har upphört att gälla. Dessa meddelanden tas bort eller flyttas till kön för obeställbara meddelanden när en mottagningsåtgärd anropas på 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 kan inte längre hämtas på vanligt sätt 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 är låsta 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 för peekade meddelanden.
Uppskjutna meddelanden
Uppskjutna meddelanden finns kvar i huvudkön tillsammans med alla andra aktiva meddelanden (till skillnad från obeställbara meddelanden som finns i en underkö), 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 tappar bort dem.
För att hämta ett uppskjutet meddelande ansvarar ägaren för att komma ihåg sekvensnumret när meddelandet skjuts upp. En mottagare som känner till sekvensnumret för ett senarelagt 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.
Förhandsvisa API:er
Peek kan användas med köer, prenumerationer och deras köer med obeställbara meddelanden.
När peek-åtgärden 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 lagts i kö, inte i vilken ordning meddelanden så småningom kan hämtas.
Du kan också skicka ett SequenceNumber till en peek-åtgärd. Den används för att avgöra var du ska börja kika från. Du kan göra efterföljande anrop till peek-å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 peek-å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 där den viktigaste är hur snabbt nätverket kan strömma meddelanden till klienten.
Här är ett exempelfragment för att läsa alla meddelanden utan att ta bort dem med .NET SDK.
SequenceNumber kan användas för att spåra det senast förhandsvisade meddelandet och börja bläddra från 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 ett exempel på utdata när man granskar 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 meddelande-exempel
- 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
- Exempel på Azure Service Bus-klientbibliotek för TypeScript - browseMessages.ts exempel