Einführung in Service Bus Trigger

Prozessentwicklung

RGeschrieben vonRiku Virtanen Vor über einer Woche aktualisiertTable of contents

Service Bus-Trigger

Service Bus-Trigger ähneln Warteschlangentriggern, da Sie mit ihnen Prozesse für Nachrichten auslösen können, die aus einer Nachrichtenwarteschlange empfangen wurden. In diesem Fall handelt es sich um eine Warteschlange oder ein Abonnement von Azure Service Bus oder Service Bus für Windows Server.

Service Bus-Triggerparameter

  • Warteschlange(erforderlich)
    Name der abzuhörenden Warteschlange oder des Abonnements

  • Verbindungszeichenfolge(erforderlich; wenn nicht festgelegt, wird standardmäßig der Servicebus-Namespace des Systems verwendet)
    Die vollständige Service Bus-Verbindungszeichenfolge

  • Maximale Anzahl gleichzeitiger Verbindungen
    Begrenzung der Anzahl der Nachrichten, die gleichzeitig verarbeitet werden. Im Wesentlichen wird dadurch die Anzahl der Prozesse begrenzt, die gleichzeitig auf einem einzelnen Agenten ausgeführt werden.

  • Anzahl der Nachrichtenvorabrufe
    Wenn gesetzt, aktiviertNachrichtenvorabruffür den Empfänger. Wenn Sie viele Nachrichten aus der Warteschlange erhalten, empfiehlt es sich, das Vorabrufen einzuschalten. Beachten Sie, dass die Anzahl der Vorabrufe immer noch niedrig genug sein sollte, damit die Nachrichten rechtzeitig verarbeitet werden können.

  • Nachricht sofort konsumieren
    Wenn gesetzt, wird die Nachricht sofort nach dem Empfang aus der Warteschlange konsumiert. Wenn nicht gesetzt, verwendet der Listener diePeekLock-Empfangsmodus, und bestätigen Sie die Meldung nur, wenn sie erfolgreich verarbeitet wurde.
    Die Sperre wird entsprechend der für die Warteschlange definierten Sperrdauer aktualisiert. Wenn die Verbindungszeichenfolge jedoch keinen Verwaltungszugriff auf den Service Bus hat, kann die Sperrdauer nicht gelesen werden und es wird angenommen, dass die Sperre eine Dauer von einer Minute hat. Wenn die Sperre kürzer als eine Minute ist, wird sie möglicherweise aufgehoben, bevor der Prozess vollständig ausgeführt wurde.
    Wenn beispielsweise der Agent abstürzt, bevor der Prozess abgeschlossen ist, wird die Nachricht an die Warteschlange zurückgegeben und erneut verarbeitet. In diesem Fall versucht der Trigger, die Nachricht nach Ablauf der Sperre erneut zu verarbeiten, bis die maximale Zustellungsanzahl in der Warteschlange oder im Abonnement erreicht ist.

  • Wiederholen Sie die Nachrichtenverarbeitung, wenn eine Ausnahme ausgelöst wird(ab 5.1.1)
    Wenn die Option „Nachricht sofort konsumieren“ aktiviert ist, wird sienichtStandardmäßig werden Nachrichten an die Warteschlange zurückgegeben, wenn die Prozessausführung mit einer Ausnahme endet. Dies dient dazu, Probleme durch versehentlich erneute Verarbeitung von Nachrichten zu reduzieren.
    Wenn Sie diese Option aktivieren und der Prozess in einer Ausnahme endet, z. B. aufgrund eines Abfragetimeouts in einer Aufgabe, wird die Nachrichtensperre sofort aufgehoben, sodass die Nachricht in die Warteschlange zurückgeschickt und von einer neuen Prozessinstanz erneut verarbeitet wird. Wenn auch die nächste Prozessinstanz fehlschlägt, wird die Sperre nicht aufgehoben, sondern ablaufen gelassen. Dies bedeutet, dass die Nachricht nach Ablauf des Sperrintervalls (1-5 Minuten) erneut verarbeitet wird. Wenn die Nachrichtenverarbeitung zum fünften Mal fehlschlägt, wird die Nachricht in die Warteschlange für unzustellbare Nachrichten gestellt und nicht erneut automatisch verarbeitet.

  • Antwort
    Wenn gesetzt, wird die Prozessantwort an eine Antwortwarteschlange gesendet, die normalerweise definiert ist durchAntworten anEigenschaft in der Anforderungsnachricht. Weitere Informationen finden Sie weiter unten unter „Antwortnachrichten“.

  • Antwortfehler
    Wenn diese Option festgelegt ist und der Prozess mit einer Ausnahme fehlschlägt, wird die Ausnahmemeldung serialisiert und an die Antwortwarteschlange gesendet. Weitere Informationen finden Sie weiter unten unter „Antwortmeldungen“.

  • Standard-Antwortwarteschlange
    Erforderlich, wenn die Option „Antworten“ gesetzt ist. Die Standardwarteschlange oder das Standardthema, an das die Antwortnachricht gesendet wird, wenn die Anfrage dies nicht mit demAntworten anEigenschaft in der Anfrage. Weitere Informationen finden Sie weiter unten unter Antwortnachrichten.

Antworten auf Nachrichten

Manchmal müssen Sie eine Antwort an den Absender der Anfrage zurückerhalten, z. B. wenn der Anrufer auf die Beendigung des ausgelösten Prozesses warten muss oder die Ergebnisse benötigt. In diesem Fall können Sie Antworten auf den Service Bus Trigger aktivieren. Dadurch wird das Ergebnis des Prozesses in einer Nachricht zurückgegeben, die in die angegebene Antwortwarteschlange gestellt wird.

Der Anfrage-Antwort-Prozess läuft normalerweise wie folgt ab:

  • Der Anrufer entscheidet sich für eine Sitzungs-ID und eine Warteschlange für den Empfang der Antwort. Er setzt diese aufReplyToSessionIdUndAntworten anEigenschaften in der Anforderungsnachricht und sendet die Nachricht an die Warteschlange, die vom Trigger abgehört wird. Der Anrufer beginnt dann, die Antwortwarteschlange abzuhören und akzeptiert nur die Nachrichtensitzung mit der angegebenen Sitzungs-ID. Dies bedeutet, dass der Anrufer nur die Antwort erhält, die für ihn bestimmt war, auch von einer gemeinsam genutzten Warteschlange.

  • Der Trigger empfängt die Anforderung und startet eine neue Prozessinstanz, wobei er den Nachrichtentext und die Eigenschaften als Triggereigenschaften an den Prozess übergibt.

  • Sobald der Prozess abgeschlossen ist und die Option „Antworten“ gesetzt ist, erstellt der Trigger die Antwortnachricht. Die Antwortnachricht enthält das serialisierte Ergebnis im Nachrichtentext, mit demSitzungs-IDauf den angegebenen Wert eingestelltReplyToSessionIdWert aus der Anfrage undKorrelations-IDeingestellt aufKorrelations-IDWert aus der Anfrage. Die Antwort wird dann an die Warteschlange oder das Thema gesendet, das in derAntworten an-Eigenschaft, oder, wenn für die Anforderung keine definiert wurde, in die im Trigger konfigurierte Standardwarteschlange für Antworten.

  • Der Anrufer erhält die Antwortnachricht in der Sitzung.

Wenn der Prozess fehlschlägt und „Antwortfehler“ ausgewählt wurde, wird die Ausnahme, die den Fehler verursacht hat, in die Antwortnachricht geschrieben. Die Nachricht enthält außerdem dieSitzungs-IDUndKorrelations-IDbei Bedarf einstellen.

Verweisen auf Triggerparameterwerte

Der Trigger übergibt den Nachrichteninhalt serialisiert als String an den Prozess. Der Zugriff erfolgt über den#trigger.daten.bodyReferenz.

Der Trigger setzt auch die#trigger.daten.eigenschaftenWörterbuch aus den Nachrichteneigenschaften. Alle benutzerdefinierten Eigenschaften werden nach Name und Wert in die Liste aufgenommen. Die integrierten Nachrichteneigenschaften sind ebenfalls zugänglich; sie sind mit dem Präfix „BrokerProperties.“ versehen. Folgende Eigenschaften sind verfügbar:

  • #trigger.data.properties["BrokerProperties.CorrelationId"] Korrelations-ID

  • #trigger.data.properties["BrokerProperties.SessionId"] Sitzungs-ID

  • #trigger.data.properties["BrokerProperties.Lieferanzahl"] Anzahl der Lieferungen, d. h. wie oft die Nachricht aus der Warteschlange empfangen wurde

  • #trigger.data.properties["BrokerProperties.LockedUntilUtc"] Zeitüberschreitung bei Nachrichtensperrewenn die Nachricht nicht sofort konsumiert wird

  • #trigger.data.properties["BrokerProperties.LockToken"] Nachrichtensperrtokenwenn die Nachricht nicht sofort konsumiert wird

  • #trigger.data.properties["BrokerProperties.MessageId"] Nachrichten-ID

  • #trigger.data.properties["BrokerProperties.Label"] Etikettder Nachricht gegeben

  • #trigger.data.properties["BrokerProperties.Antworten"] Warteschlangennamewohin die Antworten gesendet werden sollen. SieheAntworten auf NachrichtenWeitere Informationen finden Sie weiter unten.

  • #trigger.data.properties["BrokerProperties.ReplyToSessionId"] Sitzungs-IDin der Antwort festzulegen, damit der Anrufer sie identifizieren kann. Weitere Informationen finden Sie weiter unten unter Antwortnachrichten.

  • #trigger.data.properties["BrokerProperties.ContentType"] Textinhaltstyp

Der nächste Artikel istEinführung in RabbitMQ Trigger


Verwandte ArtikelService Bus-TriggerWarteschlangen-TriggerRabbitMQ-AuslöserEinführung in Queue TriggerEinführung in RabbitMQ Trigger