Durchsuchen oder einsehen von Nachrichten
Das Einsehen von Nachrichten ermöglicht einem Service Bus-Client, alle Nachrichten in einer Warteschlange oder einem Abonnement zu Diagnose- und Debugzwecken aufzuzählen.
Der Peek-Vorgang für eine Warteschlange oder ein Abonnement gibt höchstens die angeforderte Anzahl von Nachrichten zurück. Die folgende Tabelle zeigt die Typen von Nachrichten, die vom Peek-Vorgang zurückgegeben werden.
Nachrichtentyp | Enthalten? |
---|---|
Aktive Nachrichten | Ja |
Unzustellbare Nachrichten | Nein |
Gesperrte Nachrichten | Ja |
Verzögerte Nachrichten | Ja |
Abgelaufene Nachrichten | Möglicherweise (bevor sie unzustellbar sind) |
Geplante Nachrichten | Ja für Warteschlangen. Nein für Abonnements |
Unzustellbare Nachrichten
Um einen Einblick in unzustellbare Nachrichten einer Warteschlange oder eines Abonnements zu erhalten, sollte der Peek-Vorgang in der Warteschlange für unzustellbare Nachrichten ausgeführt werden, die der Warteschlange oder dem Abonnement zugeordnet ist. Weitere Informationen finden Sie unter Zugreifen auf Warteschlangen für unzustellbare Nachrichten.
Abgelaufene Nachrichten
Abgelaufene Nachrichten können in den Ergebnissen enthalten sein, die vom Peek-Vorgang zurückgegeben werden. Verbrauchte und abgelaufene Nachrichten werden durch eine asynchrone Ausführung von „Garbage Collection“ bereinigt. Dieser Schritt tritt möglicherweise nicht unmittelbar nach dem Ablauf von Nachrichten auf. Deshalb kann ein Peek-Vorgang Nachrichten zurückgeben, die bereits abgelaufen sind. Diese Nachrichten werden entfernt oder in die Warteschlange für unzustellbare Nachrichten verschoben, wenn das nächste Mal ein Empfangsvorgang für die Warteschlange oder das Abonnement aufgerufen wird. Beachten Sie dieses Verhalten, wenn Sie versuchen, verzögerte Nachrichten aus der Warteschlange wiederherzustellen.
Eine abgelaufene kann nicht mehr auf andere Weise regelmäßig abgerufen werden, selbst wenn sie von Peek zurückgegeben wird. Die Rückgabe dieser Nachrichten ist beabsichtigt, da Peek ein Diagnosetool ist, das den aktuellen Status des Protokolls widerspiegelt.
Gesperrte Nachrichten
Peek gibt auch Nachrichten zurück, die gesperrt wurden und aktuell von anderen Empfängern verarbeitet werden. Da Peek jedoch eine getrennte Momentaufnahme zurückgibt, kann der Sperrzustand einer Nachricht für eingesehene Nachrichten nicht beobachtet werden.
Verzögerte Nachrichten
Verzögerte Nachrichten verbleiben im Gegensatz zu unzustellbaren Nachrichten, die sich in einer Unterwarteschlange befinden, mit allen anderen aktiven Nachrichten in der Hauptwarteschlange, können jedoch nicht mehr mithilfe der regulären Empfangsfunktionen empfangen werden. Verzögerte Nachrichten können über das Durchsuchen von Nachrichten ermittelt werden, wenn eine Anwendung diese nicht mehr findet.
Zum Abrufen einer verzögerten Nachricht muss sich deren Besitzer die Sequenznummer beim Verzögern merken. Jeder Empfänger, der die Sequenznummer einer verzögerten Nachricht kennt, kann die Nachricht später mithilfe von Empfangsmethoden empfangen, die die Sequenznummer als Parameter verwenden. Weitere Informationen zu Sequenznummern finden Sie unter Nachrichtensequenzierung und Zeitstempel.
Peek-APIs
Peek funktioniert für Warteschlangen, Abonnements und ihre Warteschlangen für unzustellbare Nachrichten.
Bei wiederholtem Aufruf listet der Peek-Vorgang alle Nachrichten in der Warteschlange oder dem Abonnement auf, und zwar in der Reihenfolge der Sequenznummern von der niedrigsten verfügbaren bis zur höchsten. Dies ist die Reihenfolge, in der Nachrichten in die Warteschlange gestellt wurden, und nicht die Reihenfolge, in der Nachrichten schließlich abgerufen werden.
Sie können auch „SequenceNumber“ an einen Peek-Vorgang übergeben. Wird verwendet, um zu bestimmen, wo der Peek-Vorgang beginnen soll. Sie können nachfolgende Aufrufe des Peek-Vorgangs vornehmen, ohne den Parameter anzugeben, der weiter enumeriert.
Maximale Anzahl der Nachrichten
Sie können die maximale Anzahl von Nachrichten angeben, die der Einsichtvorgang zurückgeben soll. Es gibt jedoch keine Möglichkeit, eine Mindestgröße für den Batch zu garantieren. Die Anzahl der zurückgesendeten Nachrichten hängt von mehreren Faktoren ab, von denen der wichtigste ist, wie schnell das Netz Nachrichten an den Kunden weiterleiten kann.
Hier ist ein Beispielausschnitt zum Anzeigen aller Nachrichten mit dem .NET SDK. SequenceNumber
kann verwendet werden, um die letzte eingesehene Nachricht nachzuverfolgen und mit dem Browsen in der nächsten Nachricht zu beginnen.
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);
}
Die folgende Beispielausgabe zeigt eine Warteschlange mit 13 Nachrichten.
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
Zugehöriger Inhalt
Sehen Sie sich die Beispiele in der Sprache Ihrer Wahl an, um Azure Service Bus-Features zu untersuchen.
- Azure Service Bus Clientbibliotheksbeispiele für .NET (neueste Version): siehe Beispiel Abwickeln von Nachrichten.
- Azure Service Bus-Clientbibliotheksbeispiele für Java (neueste Version): siehe Beispiel - Einsehen einer Nachricht
- Azure Service Bus-Clientbibliotheksbeispiele für Python - Beispiel: „receive_peek.py“
- Azure Service Bus-Clientbibliotheksbeispiele für JavaScript - browseMessages.js-Beispiel
- Azure Service Bus-Clientbibliotheksbeispiele für TypeScript - browseMessages.js-Beispiel
Hier finden Sie Beispiele für die älteren .NET- und Java-Clientbibliotheken:
- Azure Service Bus-Clientbibliotheksbeispiele für .NET (Vorgängerversion)Beispiel für das - Durchsuchen von Nachrichten (Peek)
- Azure Service Bus-Clientbibliothekbeispiele für Java (Vorgängerversion): siehe Beispiel für das - Durchsuchen von Nachrichten.
Am 30. September 2026 werden die Azure Service Bus SDK-Bibliotheken „WindowsAzure.ServiceBus“, „Microsoft.Azure.ServiceBus“ und „com.microsoft.azure.servicebus“ eingestellt, da sie nicht den Azure SDK-Richtlinien entsprechen. Außerdem wird die Unterstützung des SBMP-Protokolls beendet, sodass Sie dieses Protokoll nach dem 30. September 2026 nicht mehr verwenden können. Migrieren Sie vor diesem Datum zu den neuesten Azure SDK-Bibliotheken, die wichtige Sicherheitsupdates und verbesserte Funktionen bieten.
Obwohl die älteren Bibliotheken noch über den 30. September 2026 hinaus verwendet werden können, erhalten sie keinen offiziellen Support und keine Updates mehr von Microsoft. Weitere Informationen finden Sie in der Ankündigung der Supporteinstellung.