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.
Gilt für: Azure Logic Apps (Verbrauch + Standard)
Einige Szenarien erfordern, dass Ihr Workflow sitzungsbezogene Nachrichten in einer bestimmten Reihenfolge aus einer Azure Service Bus-Warteschlange verarbeitet. Diese Nachrichten haben eine Eigenschaft, die die Beziehung miteinander definiert, z. B. eine Sitzungs-ID. Um diese Nachrichten nach Sitzung zu verarbeiten, richten Sie ein sequenzielles Konvoymuster in Ihrem Workflow ein.
Angenommen, es gibt eine Service Bus-Warteschlange, die Nachrichten aus mehreren Sitzungen empfängt. Sie haben 10 Nachrichten aus einer Sitzung mit dem Namen Session 1 und 5 Nachrichten aus einer Sitzung mit dem Namen "Session 2". Sie können einen Workflow erstellen, der zwischen Sitzungen wechselt, um Nachrichten aus der Warteschlange zu verarbeiten. Wenn der Trigger zum ersten Mal ausgelöst wird, verarbeitet der Workflow alle Nachrichten aus Sitzung 1. Wenn der Trigger erneut ausgelöst wird, verarbeitet der Workflow alle Nachrichten aus Sitzung 2.
In diesem Handbuch wird gezeigt, wie Sie einen Workflow erstellen, der das sequenzielle Konvoymuster einrichte, um die folgenden allgemeinen Schritte auszuführen:
Wenn der Dienstbus-Trigger namens Wenn eine Nachricht in einer Warteschlange empfangen wird (Peek-Lock) ausgelöst wird, führen Sie den Workflow aus.
Weitere Informationen zum Vorschausperrmodus finden Sie unter Empfangsmodi und Vorschausperre.
Initialisieren Sie eine Sitzung basierend auf der Nachricht, die der Trigger aus der ServiceBus-Warteschlange liest.
Lesen und Verarbeiten aller Nachrichten aus derselben Sitzung in der Warteschlange während der aktuellen Workflowausführung.
Für Standardlogik-Apps können Sie einen Workflow mithilfe der Vorlage " Azure Service Bus: Verarbeiten verwandter Nachrichten aus einer sitzungsfähigen Warteschlange für dieselbe Workflowinstanz – Sequenzielles Konvoymuster" erstellen.
Für Verbrauchsworkflows ist im Designer keine Workflowvorlage verfügbar, daher müssen Sie den Workflow manuell erstellen. Sie können auch die Vorlage für Standardworkflows oder die JSON-Datei für die ehemals verfügbare Vorlage mit dem Namen „Korrelierte In-Order-Zustellung mit Servicebus-Sitzungen“ überprüfen, die unter GitHub: service-bus-sessions.json verfügbar ist.
Voraussetzungen
Ein Azure Konto und ein Abonnement. Erhalten Sie ein kostenloses Azure-Konto.
Ein Service Bus-Namespace (Standard- oder Premium-Preisstufe) und eine sitzungsaktivierte Service Bus-Warteschlange.
Diese Elemente und Ihre Logik-App-Ressource müssen dasselbe Azure-Abonnement verwenden.
Stellen Sie beim Erstellen der Warteschlange sicher, dass Sie "Sitzungen aktivieren" auswählen.
Weitere Informationen finden Sie unter Erstellen eines Service Bus-Namespaces und einer Warteschlange.
Die Logik-App-Ressource, in der Sie das sequenzielle Konvoymuster einrichten möchten.
Weitere Informationen finden Sie unter:
Ihre Logik-App-Ressource benötigt auch Berechtigungen für Ihren Service Bus-Namespace. Informationen zum Überprüfen dieser Berechtigungen finden Sie unter "Überprüfen des Zugriffs auf den Service Bus-Namespace".
Überprüfen des Zugriffs auf den Service Bus-Namespace
Ihre Logik-App-Ressource und Ihr Workflow benötigen Berechtigungen für den Zugriff auf Ihren Service Bus-Namespace. Wenn Sie nicht sicher sind, ob Ihr Workflow über Berechtigungen verfügt, überprüfen Sie sie jetzt.
Suchen Und wählen Sie im Azure-Portal Ihren Service Bus-Namespace aus.
Wählen Sie im Randleistenmenü unter "Einstellungen"die Option "Richtlinien für den freigegebenen Zugriff" aus. Überprüfen Sie, ob Sie über Die Berechtigung "Verwalten " für diesen Namespace verfügen.
Rufen Sie die Verbindungszeichenfolge für Ihren Service Bus-Namespace ab, indem Sie die folgenden Schritte ausführen:
Wählen Sie auf der Seite "Freigegebene Zugriffsrichtlinien" unter "Richtlinie" "RootManageSharedAccessKey" aus.
Wählen Sie im Bereich SAS-Richtlinie: RootManageSharedAccessKey neben der primären Verbindungszeichenfolge die Schaltfläche Kopieren aus.
Tipp
Überprüfen Sie die Verbindungszeichenfolge für den
EntityPathParameter, um sicherzustellen, dass Ihre Verbindungszeichenfolge ihrem Service Bus-Namespace und nicht einer Messaging-Entität zugeordnet ist, z. B. eine Warteschlange. Wenn Sie diesen Parameter gefunden haben, gilt die Verbindungszeichenfolge für eine bestimmte Entität und ist nicht zur Verwendung mit Ihrem Workflow geeignet.Speichern Sie die Verbindungszeichenfolge für die spätere Verwendung, wenn Sie eine Verbindung von Ihrem Workflow mit dem Namespace herstellen.
Erstellen eines sequenziellen Konvoyworkflows
Je nachdem, ob Ihre Logik-App-Ressource "Standard" oder "Verbrauch" ist, führen Sie die entsprechenden Schritte aus.
Diese Schritte erstellen einen Workflow aus der Vorlage namens Azure Service Bus: Verarbeiten verwandter Nachrichten aus einer sitzungsfähigen Warteschlange für dieselbe Workflowinstanz – Sequenzielles Konvoymuster. Die Vorlage enthält den Auslöser und die Aktionen zum Implementieren dieses Workflowmusters. Darüber hinaus stellen Sie eine Verbindung mit Ihrem Service Bus-Namespace her und geben den Namen für die Service Bus-Warteschlange an, die verwendet werden soll.
Öffnen Sie im Azure-Portal Ihre Ressource vom Typ „Logic App (Standard)“.
Im Randleistenmenü unter Workflows wählen Sie Workflows aus.
Wählen Sie auf der Symbolleiste "Workflows " die Option "Aus Vorlage erstellen">aus.
Wählen Sie unter "Vorlagen" die Vorlage " Azure Service Bus: Verarbeiten verwandter Nachrichten aus einer sitzungsfähigen Warteschlange für dieselbe Workflowinstanz – Sequenzielles Konvoymuster" aus, und wählen Sie dann "Diese Vorlage verwenden" aus.
Das folgende Beispiel zeigt teilweise den Workflowvorlagenkatalog:
Führen Sie im Bereich "Neuen Workflow aus Vorlagenbereich erstellen " die folgenden Schritte aus:
Führen Sie auf der Registerkarte " Grundlagen " die folgenden Schritte aus:
Geben Sie einen Namen für Ihren Workflow ein.
Der Name muss mit einem Buchstaben beginnen und darf nur Buchstaben, Zahlen, Striche und Unterstriche enthalten.
Wählen Sie "Statuslos" oder "Statuslos" aus, basierend auf Ihrem Szenario.
Wählen Sie Weiteraus.
Führen Sie auf der Registerkarte "Verbindungen " die folgenden Schritte aus:
Wählen Sie für Service Bus in der Spalte "Verbindung " die Option "Verbinden" aus.
Geben Sie die folgenden Informationen an:
Parameter Wert BESCHREIBUNG Verbindungsname < Verbindungsname> Der Name für die Verbindung mit Ihrem Service Bus-Namespace. Authentifizierungstyp Verbindungszeichenfolge Der zu verwendende Authentifizierungstyp. Verbindungszeichenfolge < namespace-connection-string> Die Verbindungszeichenfolge, die Sie zuvor im Service Bus-Namespace gespeichert haben.
Wenn Sie fertig sind, wählen Sie "Verbindung>hinzufügen" aus.
Führen Sie auf der Registerkarte "Parameter " die folgenden Schritte aus:
Geben Sie die folgenden Informationen an:
Parameter BESCHREIBUNG Warteschlangenname Der Name für die sitzungsfähige ServiceBus-Warteschlange mit den zu verarbeitenden Nachrichten. Maximale Batchgröße Die maximale Anzahl von Nachrichten, die als Batch abgerufen werden sollen. Wenn Sie fertig sind, wählen Sie Weiter.
Überprüfen Sie die bereitgestellten Informationen, und wählen Sie "Erstellen" aus.
Der Designer zeigt einen Workflow, der den Trigger "Wenn Nachrichten in einer Warteschlange verfügbar sind (Peek-Lock) und verschiedene Aktionen enthält, z. B.:
Dieser Workflow enthält vordefinierte umgebungsübergreifende Parameter, um Werte abzustrahieren, die sich in verschiedenen Umgebungen ändern, in denen Ihr Workflow ausgeführt wird, z. B. Entwicklung, Test und Produktion. Viele Vorgänge im Workflow verwenden diese Parameter anstelle hartcodierter Werte.
In der folgenden Tabelle werden die folgenden umgebungsübergreifenden Parameter beschrieben:
Name Typ Wert BESCHREIBUNG delayInMinutes_<workflow-name>Integer 0Die Anzahl der Minuten, die gewartet werden sollen, bevor das Nachrichtensperrtoken erneuert wird. messageBatchSize_<workflow-name>Integer 50Die Anzahl der Nachrichten für den aktuellen Batch. queueName_<workflow-name>String <Service-Bus-queue-name>Der Name für Ihre Service-Bus-Warteschlange. Weitere Informationen finden Sie unter Erstellen von umgebungsübergreifenden Parametern für Workfloweingaben.
Wenn Sie mehr über die vordefinierten Vorgänge im Workflow erfahren möchten, fahren Sie mit dem nächsten Abschnitt fort.
Workflow-Vorgänge
In den folgenden Abschnitten werden die vordefinierten Vorgänge im Workflow beschrieben.
Wenn Nachrichten in einer Warteschlange verfügbar sind (Vorschausperre)
Dieser integrierte Azure Service Bus-Trigger wartet auf eine oder mehrere Nachrichten, um in einer angegebenen Servicebus-Warteschlange einzutreffen. Wenn eine Nachricht in der Warteschlange vorhanden ist, wird der Trigger ausgelöst und führt eine Workflowinstanz aus. Peek-Lock bedeutet, dass der Trigger eine Anforderung zum Abrufen einer Nachricht aus der Warteschlange sendet. Wenn eine Nachricht vorhanden ist, ruft der Trigger die Nachricht ab und sperrt sie, damit keine weitere Verarbeitung für diese Nachricht erfolgt, bis die Sperrfrist abgelaufen ist. Der Trigger gibt auch ein ServiceBusMessage-Objekt aus.
In der folgenden Tabelle werden die vorgefüllten Triggerparameter beschrieben.
| Parameter | Wert | BESCHREIBUNG |
|---|---|---|
| Warteschlangenname | queueName_<workflow-name> |
Der vordefinierte umgebungsübergreifende Parameter, der Ihre ServiceBus-Warteschlange angibt. Führen Sie die folgenden Schritte aus, um diesen Wert festzulegen: 1. Wählen Sie innerhalb des Namensfelds "Warteschlange " aus, und wählen Sie dann das Blitzsymbol aus, um die dynamische Inhaltsliste zu öffnen. 2. Wählen Sie in der Liste die Option queueName_<workflow-name>aus. |
| Warteschlangentyp | Hauptseite | Dieser Standardtyp bezieht sich auf Ihre primäre Servicebus-Warteschlange. |
| Maximale Nachrichtenbatchgröße | messageBatchSize_<workflow-name> |
Der vordefinierte umgebungsübergreifende Parameter, der die größte Anzahl von Nachrichten in einem Batch angibt. Führen Sie die folgenden Schritte aus, um diesen Wert festzulegen: 1. Wählen Sie im Feld " Maximale Nachrichtenbatchgröße " aus, und wählen Sie dann das Blitzsymbol aus, um die dynamische Inhaltsliste zu öffnen. 2. Wählen Sie in der Liste die Option messageBatchSize_<workflow-name>aus. |
Weitere Informationen finden Sie unter "Wenn Nachrichten in einer Warteschlange verfügbar sind (Vorschausperre)".
"Prozess abgeschlossen-Flag initialisieren"
Diese Initialize-Variable-Aktion namens InitializeProcess Complete Flag erstellt eine Variable mit den folgenden Anfangswerten:
| Parameter | Wert | BESCHREIBUNG |
|---|---|---|
| Name | processCompleted |
Der Name für die Variable. |
| Typ | Boolean | Der Datentyp für die Variable. |
| Wert | FALSCH | Der Standardwert für die Variable. |
Der Wert der Variablen processCompleted ändert sich zu true zu einem späteren Zeitpunkt während der Workflow-Ausführung, wenn die folgenden Bedingungen zutreffen:
- Für die Verarbeitung sind in der Sitzung keine weiteren Nachrichten vorhanden.
- Die Sitzungssperre muss nicht mehr erneuert werden, damit die aktuelle Workflowinstanz die Ausführung beenden kann.
Bereichsaktion
Die äußere übergeordnete Scope-Aktion enthält eine innere geschachtelte Scope-Aktion namens Geschäftslogik Scope. Dieser geschachtelte Bereich enthält eine Platzhalteraktion namens "Geschäftslogik". Hier können Sie die Aktionen für die Geschäftslogik Ihres Szenarios hinzufügen, um die aktuelle Nachricht zu verarbeiten.
Benennen Sie aus Gründen der Übersichtlichkeit die äußere übergeordnete Bereichsaktion in
Process message.
Erweitern Sie die innere geschachtelte Aktion namens Geschäftslogikbereich.
Wenn ein Problem in diesem Bereich auftritt, verwenden Sie die nachfolgenden Aktionen außerhalb der übergeordneten Bereichsaktion , um dieses Problem zu behandeln.
Ersetzen Sie die Platzhalteraktion für die Geschäftslogik durch die tatsächlichen Aktionen für die Geschäftslogik Ihres Szenarios.
Unter der Geschäftslogikbereichsaktion ist die Aktion "Prozess abgeschlossen " so eingerichtet, dass sie immer ausgeführt wird, unabhängig vom Status, der der Geschäftslogikbereich-Aktion zugewiesen ist, nachdem alle Aktionen in der Geschäftslogikbereichsaktion ausgeführt wurden. Damit die Aktion "Prozess abgeschlossen " immer ausgeführt werden kann, legt der Workflow die Ausführung nach der Einstellung auf die folgenden Werte vor:
- Ist erfolgreich
- Ist abgelaufen
- Wird übersprungen
- Fehler
Die Aktion "Prozess abgeschlossen " ändert den processCompleted Variablenwert von "false " in "true", was angibt, dass die Nachrichtenverarbeitung abgeschlossen ist.
Until
Auf der Ebene "Geschäftslogikbereich" führt eine parallele Verzweigung eine Until-Schleife aus, die bestimmt, ob andere Nachrichten in derselben Sitzung vorhanden sind. Aktionen werden innerhalb der Schleife ausgeführt, bis die Schleifenbedingung erfüllt ist oder der Timeoutzeitraum verstrichen ist. In diesem Beispiel wird die Schleife weiter ausgeführt, bis die Nachrichtenverarbeitung abgeschlossen ist, wie durch die folgende Bedingung ausgedrückt:
processCompleted = true
Sperre einer Nachricht in einer Warteschlange verlängern
In der Until-Schleife steuert die Aktion im "Service Bus" mit dem Namen "Sperre einer Nachricht in einer Warteschlange erneuern" die Zeitspanne, in der der Workflow eine Nachricht verarbeiten kann, bevor die Nachricht erneut zum Verarbeiten bereitsteht. Dieses Verhalten verhindert eine vorzeitige Veröffentlichung aufgrund lang ausgeführter Aufgaben und stellt sicher, dass nur ein Client die Nachricht gleichzeitig verarbeitet, bevor die Sperrdauer auf den Anfangswert festgelegt wird. Weitere Informationen finden Sie unter Verlängern von Sperren.
In der folgenden Tabelle werden die vorgefüllten Parameter der Aktion beschrieben:
| Parameter | Wert | BESCHREIBUNG |
|---|---|---|
| Warteschlangenname | queueName_<workflow-name> |
Der vordefinierte umgebungsübergreifende Parameter, der die Service Bus-Warteschlange angibt. Führen Sie die folgenden Schritte aus, um diesen Wert festzulegen: 1. Wählen Sie innerhalb des Namensfelds "Warteschlange " aus, und wählen Sie dann das Blitzsymbol aus, um die dynamische Inhaltsliste zu öffnen. 2. Wählen Sie in der Liste die Option queueName_<workflow-name>aus. |
| Sperrtoken | Sperrtoken | Das Sperrtoken für die Nachricht, die aufgegeben werden soll. Führen Sie die folgenden Schritte aus, um diesen Wert festzulegen: 1. Wählen Sie im Feld "Sperren"-Token aus, und wählen Sie dann das Blitzsymbol aus, um die dynamische Inhaltsliste zu öffnen. 2. Wählen Sie in der Liste unter "Wenn Nachrichten in einer Warteschlange verfügbar sind" aus Lock Token. |
Warten, bis der Vorgang abgeschlossen ist
In der "Until "-Schleife fügt die Verzögerungsaktion mit dem Namen " Auf Prozess warten, bis abgeschlossen " eine zusätzliche Verzögerung für die Nachrichtenverarbeitung hinzu. Stellen Sie sicher, dass dieser Verzögerungswert kleiner als die Sperrtimeoutdauer für die Warteschlange ist. Die mindeste Sperrdauer beträgt 30 Sekunden.
In der folgenden Tabelle werden die vorgefüllten Parameter der Aktion beschrieben:
| Parameter | Wert | BESCHREIBUNG |
|---|---|---|
| Zählen | delayInMinutes_<workflow-name> |
Der vordefinierte umgebungsübergreifende Parameter, der die Anzahl der Minuten angibt, die gewartet werden sollen, bevor das Nachrichtensperrtoken erneuert wird. Führen Sie die folgenden Schritte aus, um diesen Wert festzulegen: 1. Wählen Sie innerhalb des Namensfelds "Warteschlange " aus, und wählen Sie dann das Blitzsymbol aus, um die dynamische Inhaltsliste zu öffnen. 2. Wählen Sie in der Liste die Option delayInMinutes_<workflow-name>aus. |
| Einheit | Minute | Die Zeiteinheit für die Verzögerung. |
Aktionen für die Verarbeitung nach der Nachricht
Unter dem Process message Bereich sind zwei parallele Verzweigungen vorhanden, um die Fälle für die nicht erfolgreiche und erfolgreiche Nachrichtenverarbeitung zu behandeln.
Verzweigung 1
Diese Verzweigung enthält eine Compose-Aktion namens Kompensationslogik als Platzhalter für die Aktionen, die Sie für die Behandlung von Fehlern und Ausnahmen ausführen möchten.
Ersetzen Sie diesen Platzhalter durch die gewünschten Aktionen.
Sie können beispielsweise eine Bereichsaktion einrichten, die Ihre Fehlerbehandlungsaktionen enthält.
Stellen Sie sicher, dass die Fehlerbehandlungsaktion direkt unter dem
Process messageBereich nur ausgeführt wird, nachdem derProcess messageBereich mit einem der folgenden Status abgeschlossen ist:- Ist abgelaufen
- Wird übersprungen
- Fehler
Beispiel:
Unter den Fehlerbehandlungsaktionen entsperrt die Dienstbus-Aktion " Nachricht in einer Warteschlange abbrechen " eine Nachricht und fordert die Nachricht erneut für einen anderen Versuch auf.
In der folgenden Tabelle werden die vorgefüllten Werte der Aktion beschrieben:
Parameter Wert BESCHREIBUNG Warteschlangenname queueName_<workflow-name>Der vordefinierte umgebungsübergreifende Parameter, der die Service-Bus-Warteschlange angibt. Führen Sie die folgenden Schritte aus, um diesen Wert festzulegen:
1. Wählen Sie innerhalb des Namensfelds "Warteschlange " aus, und wählen Sie dann das Blitzsymbol aus, um die dynamische Inhaltsliste zu öffnen.
2. Wählen Sie in der Liste die OptionqueueName_<workflow-name>aus.Sperrtoken Sperrtoken Das Sperrtoken für die Nachricht, die abgebrochen werden soll. Führen Sie die folgenden Schritte aus, um diesen Wert festzulegen:
1. Wählen Sie im Feld "Sperren"-Token aus, und wählen Sie dann das Blitzsymbol aus, um die dynamische Inhaltsliste zu öffnen.
2. Wählen Sie in der Liste unter "Wenn Nachrichten in einer Warteschlange verfügbar sind" ausLock Token.Beispiel:
Verzweigung 2
Diese Verzweigung enthält eine ServiceBus-Aktion namens "Nachricht abschließen" in einer Warteschlange , die die Nachricht als erledigt markiert und die Nachricht aus der Warteschlange löscht. Dieses Verhalten verhindert die erneute Zustellung und verschiebt die Nachricht in den Status "verarbeitet". Diese Aktion wird nur ausgeführt, wenn der
Process messageBereich erfolgreich abgeschlossen wurde.In der folgenden Tabelle werden die vorgefüllten Werte der Aktion beschrieben:
Parameter Wert BESCHREIBUNG Warteschlangenname queueName_<workflow-name>Der vordefinierte umgebungsübergreifende Parameter, der Ihre ServiceBus-Warteschlange angibt. Führen Sie die folgenden Schritte aus, um diesen Wert festzulegen:
1. Wählen Sie innerhalb des Namensfelds "Warteschlange " aus, und wählen Sie dann das Blitzsymbol aus, um die dynamische Inhaltsliste zu öffnen.
2. Wählen Sie in der Liste die OptionqueueName_<workflow-name>aus.Sperrtoken Sperrtoken Das Sperrtoken für die Nachricht, die verworfen werden soll. Führen Sie die folgenden Schritte aus, um diesen Wert festzulegen:
1. Wählen Sie im Feld "Sperren"-Token aus, und wählen Sie dann das Blitzsymbol aus, um die dynamische Inhaltsliste zu öffnen.
2. Wählen Sie in der Liste unter "Wenn Nachrichten in einer Warteschlange verfügbar sind" ausLock Token.Beispiel:
Ausführen des Workflows
Speichern Sie den Workflow. Wählen Sie auf der Symbolleiste des Designers Speichern aus.
Um Ihren Workflow zu testen, senden Sie Nachrichten an Ihre ServiceBus-Warteschlange.
Vergewissern Sie sich, dass sich der Workflow erwartungsgemäß verhält.