Nachrichtenverzögerung

Wenn ein Warteschlangen- oder Abonnementclient eine Nachricht empfängt, die er verarbeiten möchte, aber die Verarbeitung aufgrund besonderer Umstände derzeit nicht möglich ist, hat er die Möglichkeit, den Abruf der Nachricht auf einen späteren Zeitpunkt zu „verzögern“. Die Nachricht bleibt in der Warteschlange oder im Abonnement, wird jedoch zurückgestellt.

Hinweis

Verzögerte Nachrichten laufen nicht ab und werden automatisch in eine Warteschleife verschoben, bis eine Client-App versucht, sie mithilfe einer API und der Sequenznummer zu empfangen. Dieses Verhalten ist beabsichtigt. Wenn ein Client versucht, eine verzögerte Nachricht abzurufen, wird sie auf abgelaufene Bedingung überprüft und in eine Warteschlange mit einem inaktiven Buchstaben verschoben, wenn sie bereits abgelaufen ist. Eine abgelaufene Nachricht wird nur dann in die Warteschlange für unzustellbare Nachrichten verschoben, wenn die Funktion „Unzustellbar“ für die Entität (Warteschlange oder Abonnement) aktiviert ist.

Beispielszenarios

Das Verzögerungsfeature wurde speziell für Szenarien für die Workflowverarbeitung erstellt. Workflowframeworks erfordern möglicherweise, dass bestimmte Vorgänge in einer bestimmten Reihenfolge verarbeitet werden. Sie müssen möglicherweise die Verarbeitung einiger empfangener Nachrichten verschieben, bis vorgeschriebene Vorarbeiten, die durch andere Nachrichten bedingt sind, abgeschlossen wurden.

Ein einfaches und anschauliches Beispiel ist die Verarbeitungssequenz für eine Bestellung, bei der eine Zahlungsaufforderung von einem externen Zahlungsdienstleister in einem System angezeigt wird, bevor die entsprechende Bestellung vom Geschäft an das Abwicklungssystem weitergegeben wurde. In diesem Fall kann das Abwicklungssystem das Verarbeiten der Zahlungsaufforderung verzögern, bis eine Bestellung vorhanden ist, der diese zugeordnet werden kann. In Rendezvousszenarios, bei denen Nachrichten von verschiedenen Quellen einen Workflow vorantreiben, kann die Echtzeitausführung einer Reihenfolge korrekt sein, aber die Nachrichten, die die Ergebnisse darstellen, können in der falschen Reihenfolge eingehen.

Die Verzögerung hilft letztendlich beim Neuordnen der Nachrichten von der Eingangsreihenfolge in eine Reihenfolge, in der sie verarbeitet werden können. Dabei werden die Nachrichten, deren Verarbeitung verschoben werden muss, sicher im Nachrichtenspeicher belassen.

Wenn eine Nachricht nicht verarbeitet werden kann, weil eine bestimmte Ressource für die Verarbeitung dieser Nachricht vorübergehend nicht verfügbar ist, aber die Verarbeitung der Nachricht nicht sofort angehalten werden soll, stellt das Merken der Sequenznummer in einer geplanten Nachricht, die in einigen Minuten gesendet werden soll, und das erneute Abrufen der verzögerten Nachricht, wenn die geplante Nachricht eingeht, eine Methode dar, um diese Nachricht für einige Minuten zurückzustellen. Wenn alle Vorgänge eines Nachrichtenhandlers von einer Datenbank abhängen und diese Datenbank vorübergehend nicht verfügbar ist, sollten Sie nicht die Verzögerung nutzen, sondern das Empfangen von Nachrichten vollständig anhalten, bis die Datenbank wieder verfügbar ist.

Abrufen von verzögerten 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 oder Einsehen 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.

Nächste Schritte

Sehen Sie sich die Beispiele in der Sprache Ihrer Wahl an, um Azure Service Bus-Features zu untersuchen.

Hier finden Sie Beispiele für die älteren .NET- und Java-Clientbibliotheken:

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.