Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Wenn ein Warteschlangen- oder Abonnementclient eine Nachricht empfängt, die er verarbeiten möchte, die Verarbeitung ist jedoch aufgrund besonderer Umstände derzeit nicht möglich, kann der Client den Abruf der Nachricht zu einem späteren Zeitpunkt zurückstellen. Die Nachricht bleibt in der Warteschlange oder im Abonnement, wird jedoch zurückgestellt.
Wann die Nachrichtenzurückstellung verwendet werden sollte
Der Aufschub ist ein Feature, das speziell für Workflowverarbeitungsszenarien erstellt wurde. Workflowframeworks erfordern möglicherweise, dass bestimmte Vorgänge in einer bestimmten Reihenfolge verarbeitet werden. Möglicherweise müssen sie die Verarbeitung einiger empfangener Nachrichten verschieben, bis zuvor vorgeschriebene Verarbeitungsschritte, die auf anderen Nachrichten basieren, abgeschlossen sind.
Ein einfaches illustratives Beispiel ist eine Auftragsverarbeitungssequenz, in der eine Zahlungsbenachrichtigung von einem externen Zahlungsanbieter in einem System angezeigt wird, bevor die entsprechende Bestellung von der Storefront an das Erfüllungssystem weitergegeben wird. In diesem Fall kann das Erfüllungssystem die Verarbeitung der Zahlungsbenachrichtigung zurückstellen, bis eine Bestellung vorhanden ist, mit der sie verknüpft werden soll. In Rendezvous-Szenarien, in denen Nachrichten aus unterschiedlichen Quellen einen Workflow weiterleiten, ist die Ausführungsreihenfolge in Echtzeit möglicherweise korrekt, aber die Nachrichten, die die Ergebnisse widerspiegeln, kommen möglicherweise außerhalb der Reihenfolge.
Die Verzögerung hilft beim Neuanordnen von Nachrichten aus der Ankunftsreihenfolge in eine Reihenfolge, in der sie verarbeitet werden können, während diese Nachrichten sicher im Nachrichtenspeicher verbleiben, wenn die Verarbeitung verschoben werden muss.
Wenn eine Nachricht nicht verarbeitet werden kann, weil eine bestimmte Ressource für die Verarbeitung dieser Nachricht vorübergehend nicht verfügbar ist, die Nachrichtenverarbeitung jedoch nicht angehalten werden sollte, können Sie diese Nachricht einige Minuten lang beiseite legen. Denken Sie an die Sequenznummer in einer geplanten Nachricht , die in einigen Minuten gepostet werden soll, und rufen Sie die verzögerte Nachricht erneut ab, wenn die geplante Nachricht eingeht. Wenn ein Meldungshandler von einer Datenbank für alle Vorgänge abhängt und diese Datenbank vorübergehend nicht verfügbar ist, verwenden Sie keine Verzögerung. Setzen Sie stattdessen den Empfang von Nachrichten vollständig aus, bis die Datenbank wieder verfügbar ist.
Abrufen verzögerter Nachrichten
Zurückgestellte Nachrichten verbleiben zusammen mit allen anderen aktiven Nachrichten in der Hauptwarteschlange (anders als Dead-Letter-Nachrichten, die sich in einer Unterwarteschlange befinden), können jedoch über die regulären Empfangsvorgänge nicht mehr empfangen werden. Sie können zurückgestellte Nachrichten über das Durchsuchen oder Einsehen von Nachrichten finden, wenn eine Anwendung sie aus dem Blick verliert.
Um eine verzögerte Nachricht abzurufen, ist der Besitzer dafür verantwortlich, die Sequenznummer beim Zurückstellen der Nachricht zu speichern. 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.
Hinweis
Verzögerte Nachrichten laufen nicht ab und wechseln automatisch zu einer Warteschlange mit Inschrift, bis eine Client-App versucht, sie mithilfe einer API und der Sequenznummer zu empfangen. Dieses Verhalten ist beabsichtigt. Wenn ein Client versucht, eine zurückgestellte Nachricht abzurufen, wird geprüft, ob der Ablaufstatus vorliegt, und sie wird in eine Dead-Letter-Warteschlange verschoben, wenn sie bereits abgelaufen ist. Eine abgelaufene Nachricht wird nur dann in eine Dead-Letter-Unterwarteschlange verschoben, wenn die Dead-Letter-Funktion für die Entität (Warteschlange oder Abonnement) aktiviert ist.
Wichtige Verhaltensweisen verzögerter Nachrichten
- Zurückgestellte Nachrichten bleiben in der Hauptwarteschlange, nicht in einer Unterwarteschlange.
- Sie müssen die Sequenznummer der Nachricht verwenden, um eine verzögerte Nachricht abzurufen.
- Verzögerte Nachrichten können über das Durchsuchen von Nachrichten (Vorschau) ermittelt werden.
- Verzögerte Nachrichten laufen erst ab, wenn ein Client versucht, sie zu empfangen.
- Die Ablaufüberprüfung erfolgt nur, wenn ein Client eine Empfangs-API mit der Sequenznummer aufruft.
Nächste Schritte
Sehen Sie sich die Beispiele in der Sprache Ihrer Wahl an, um Azure Service Bus-Features zu untersuchen.
- Beispiele für die Azure Service Bus-Clientbibliothek für .NET (aktuellste Version) – siehe das Beispiel Nachrichten abschließen.
- Azure Service Bus-Clientbibliotheksbeispiele für Java (neueste)
-
Azure Service Bus Clientbibliotheksbeispiele für Python finden Sie im
receive_deferred_message_queue.pyBeispiel. -
Azure Service Bus Clientbibliotheksbeispiele für JavaScript – siehe
advanced/deferral.jsBeispiel. -
Azure Service Bus Clientbibliotheksbeispiele für TypeScript finden Sie im
advanced/deferral.tsBeispiel.