Starten Sie einen Prozess, indem Sie eine Nachricht von einem Service Bus empfangen.
Geschrieben vonOssi Galkin Vor über einer Woche aktualisiertTable of contentsService Bus Trigger sind ähnlich wieWarteschlangenauslöserindem sie es Ihnen ermöglichen, Prozesse für Nachrichten auszulösen, die aus einer Nachrichtenwarteschlange empfangen wurden. In diesem Fall stammen die Nachrichten aus einer Azure Service Bus- oder Service Bus-Warteschlange oder einem Abonnement für Windows Server.
Notiz: Der Service Bus Trigger kann keine Nachrichtensitzungen akzeptieren und kann daher nicht auf Warteschlangen oder Abonnements lauschen, die Sitzungen erfordern. Er kann jedoch Antworten an Sitzungswarteschlangen senden, wie unten beschrieben.
Konfigurieren von Service Bus-Triggern
Warteschlange(erforderlich)
Name der Warteschlange oder des Abonnements, das abgehört werden soll.Verbindungszeichenfolge(erforderlich; wenn nicht festgelegt, wird standardmäßig der Service Bus-Namespace des Systems verwendet)
Die vollständige Service Bus-Verbindungszeichenfolge.Maximale Anzahl gleichzeitiger Verbindungen
Beschränkung der Anzahl der gleichzeitig verarbeiteten Nachrichten. Im Wesentlichen wird dadurch die Anzahl der Prozesse begrenzt, die gleichzeitig auf einem einzelnen Agenten ausgeführt werden.Anzahl der Nachrichtenvorabrufe
Wenn gesetzt,Nachrichtenvorabruffür den Empfänger wird aktiviert. 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 Erhalt aus der Warteschlange entnommen. Wenn nicht gesetzt, verwendet der Listener diePeekLock-Empfangsmodusund bestätigt die Nachricht 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 abgeschlossen ist. Wenn der Agent beispielsweise 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 verarbeiten“ aktiviert ist, werden Nachrichten standardmäßig nicht an die Warteschlange zurückgegeben, wenn die Prozessausführung mit einer Ausnahme endet. Dies soll Probleme mit versehentlich erneut verarbeiteten Nachrichten reduzieren. Wenn Sie diese Option aktivieren und der Prozess mit einer Ausnahme endet (z. B. aufgrund eines Abfragetimeouts in einer Aufgabe), wird die Nachrichtensperre sofort aufgehoben. Daher wird die Nachricht an die Warteschlange zurückgegeben und von einer neuen Prozessinstanz erneut verarbeitet. Wenn auch die nächste Prozessinstanz fehlschlägt, wird die Sperre nicht aufgehoben, sondern läuft ab. 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 festgelegt, wird die Prozessantwort an eine Antwortwarteschlange gesendet, die normalerweise durch die Eigenschaft ReplyTo in der Anforderungsnachricht definiert wird. 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“ festgelegt ist. Die Standardwarteschlange oder das Standardthema, an das die Antwortnachricht gesendet wird, wenn dies in der Anforderung nicht mit der Eigenschaft „ReplyTo“ angegeben wurde. Weitere Informationen finden Sie weiter unten unter „Antwortnachrichten“.
Triggerdaten für den Prozess
Der Trigger übergibt den Nachrichteninhalt serialisiert als String an den Prozess. Der Zugriff erfolgt über den#trigger.daten.bodyReferenz.
Der Trigger füllt auch die#trigger.daten.eigenschaftenWörterbuch mit 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 "MaklerImmobilien."-Präfix. Die folgenden Eigenschaften sind verfügbar:
#trigger.data.properties["BrokerProperties.CorrelationId"] -Korrelations-ID
#trigger.data.properties["BrokerProperties.Sitzungs-ID"] -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["BrokerEigenschaften.Label"] -Etikettder Nachricht gegeben.
#trigger.data.properties["BrokerProperties.Antworten"] -Warteschlangennamewohin Antworten gesendet werden sollen. SieheAntworten auf Nachrichtenunten für weitere Informationen.
#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.
Antworten auf Nachrichten
Manchmal müssen Sie dem Absender einer Anforderung antworten, beispielsweise 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, der das Prozessergebnis in einer Nachricht zurückgibt, die in die angegebene Antwortwarteschlange gestellt wird.
Der Anfrage-Antwort-Prozess läuft üblicherweise wie folgt ab:
Der Anrufer entscheidet sich für eine Sitzungs-ID und eine Warteschlange für den Empfang der Antwort. Er legt diese alsReplyToSessionIdUndAntworten anEigenschaften in der Anforderungsnachricht und sendet die Nachricht an die vom Trigger abgehörte Warteschlange. Der Anrufer beginnt dann, die Antwortwarteschlange abzuhören und akzeptiert nur die Nachrichtensitzung mit der angegebenen Sitzungs-ID. Dadurch wird sichergestellt, dass der Anrufer auch aus einer gemeinsam genutzten Warteschlange nur die für ihn bestimmte Antwort erhält.
Der Trigger empfängt die Anforderung und startet eine neue Prozessinstanz, wobei der Nachrichtentext und die Eigenschaften als Triggereigenschaften an den Prozess übergeben werden.
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 in der Anfrage keine definiert wurde, an 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 hat auch dieSitzungs-IDUndKorrelations-IDbei Bedarf einstellen.
Verwandte ArtikelWarteschlangen-TriggerRabbitMQ-AuslöserEinführung in Queue TriggerEinführung in Service Bus TriggerEinführung in RabbitMQ Trigger