Prozessentwicklung
RGeschrieben vonRiku Virtanen Vor über einer Woche aktualisiertTable of contentsRabbitMQ-Auslöser
Der RabbitMQ-Trigger bietet ähnliche Funktionen wie Queue- und Service Bus-Trigger, jedoch speziell mit RabbitMQ-Warteschlangen. Dieser Trigger ist seit Frends Version 5.5 verfügbar.
Warteschlange
(erforderlich)Name der abzuhörenden Warteschlange
Verbindungszeichenfolge
(erforderlich)AMQP 0-9-1 URI, z. B.
amqp://Gast:Gast@localhost:5672/
Maximale Anzahl gleichzeitiger Nachrichten
Begrenzung der Anzahl der gleichzeitig verarbeiteten Nachrichten. Begrenzt im Wesentlichen die Anzahl der Prozesse, die gleichzeitig auf einem einzelnen Agenten ausgeführt werden. Ein leerer Wert oder ein Wert von 0 wird als unendlich behandelt.
Wiederholen Sie die Nachrichtenverarbeitung, wenn eine Ausnahme ausgelöst wird
Wenn diese Option gesetzt ist und die erste Prozessausführung in einer Ausnahme fehlschlägt, wird der Prozess ein zweites Mal ausgeführt.Antwort
Wenn gesetzt, wird das Ergebnis einer erfolgreichen Prozessausführung an eine Antwortwarteschlange gesendet. Die Antwortwarteschlange ist auf den WertAntworten an
Eigenschaft der Anfrage. Wenn dieAntworten an
Eigenschaft nicht gesetzt ist, wird die Antwortwarteschlange aufStandard-Antwortwarteschlange
Antwortfehler
Wenn gesetzt, wird das Ergebnis einer fehlgeschlagenen Prozessausführung an eine Antwortwarteschlange gesendet
Standard-Antwortwarteschlange
Die Warteschlange, an die Antworten gesendet werden, wenn die
Antworten an
Eigenschaft ist nicht festgelegt
Antworten auf Nachrichten
Manchmal müssen Sie eine Antwort an den Absender der Anfrage erhalten, 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 RabbitMQ-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 Warteschlange zum Empfang der Antwort und beginnt, diese abzuhören. Eine Nachricht wird an die vom Trigger abgehörte Warteschlange gesendet, mit der
Antworten an
Eigenschaft auf die Antwortwarteschlange gesetzt. DieKorrelations-ID
Die Eigenschaft kann auch festgelegt werden, um die Korrelation von Anfragen und Antworten zu erleichtern.Der Trigger empfängt die Anforderung und startet eine neue Prozessinstanz, wobei er den Nachrichtentext und die Eigenschaften als Triggereigenschaften an den Prozess übergibt.
Der Prozess ist abgeschlossen. In zwei Fällen endet der Ablauf hier:
Wenn der Prozess erfolgreich war und
Antwort
ist nicht ausgewählt.Wenn der Prozess fehlgeschlagen ist und
Antwortfehler
ist nicht ausgewählt.
Andernfalls wird eine Antwort erstellt. Dies kann auf drei Arten geschehen:
Wenn der Prozess erfolgreich war und das Prozessergebnis eine RabbitMQ-Nachricht ist (d. h. ein Objekt mit einem
Körper
UndGrundlegende Eigenschaften
) wird die Nachricht als Antwort verwendet. So können Entwickler die Antwort genau an ihre Bedürfnisse anpassen.Wenn der Prozess erfolgreich war und das Prozessergebnis keine RabbitMQ-Nachricht ist, wird die Antwort auf das Prozessergebnis gesetzt.
Wenn der Vorgang fehlgeschlagen ist, wird als Antwort die Ausnahmemeldung angezeigt.
In den letzten beiden Fällen werden die Eigenschaften vom Agenten festgelegt.
Korrelations-ID
Die Eigenschaft ist auf den WertKorrelations-ID
Wert aus der Anfrage und einige andere allgemeine Eigenschaften, die auf sinnvolle Werte gesetzt sind.Die Antwort wird dann an die Warteschlange gesendet, die in der
Antworten an
Eigenschaft, oder wenn die Anfrage keine definiert hat, in derStandard-Antwortwarteschlange
.Der Anrufer erhält die Antwortnachricht und verarbeitet sie wie gewünscht.
Verweisen auf Triggerparameterwerte
Der Trigger übergibt den Nachrichteninhalt serialisiert als UTF-8-Zeichenfolge an den Prozess. Der Zugriff erfolgt über den#trigger.daten.body
Referenz.
Zu den Nachrichteneigenschaften gelangen Sie unter#trigger.data.Grundlegende Eigenschaften
, z. B.#trigger.data.BasicProperties.CorrelationId
. Einige Routingdetails sind ebenfalls verfügbar, z. B.#trigger.data.RoutingKey
. Weitere Informationen zu Eigenschaften und Routingdetails finden Sie inRabbitMQ's Publisher-Dokumentation.
Der nächste Artikel istEinführung in bedingte Trigger
Verwandte ArtikelService Bus-TriggerWarteschlangen-TriggerRabbitMQ-AuslöserEinführung in Queue TriggerEinführung in Service Bus Trigger