Starten Sie einen Prozess, indem Sie eine Nachricht in RabbitMQ empfangen.
Geschrieben vonOssi Galkin Vor über einer Woche aktualisiertVerfügbar seit Version 5.5
RabbitMQ-Trigger ermöglichen das Auslösen von Prozessen basierend auf Nachrichten, die von einer RabbitMQ-Warteschlange empfangen werden.
Der RabbitMQ-Trigger ruft die Nachricht aus der Warteschlange ab, sobald eine neue Nachricht verfügbar ist. Der Inhalt der empfange- nen Nachricht steht dann im Prozess zur weiteren Verarbeitung zur Verfügung.
Konfigurieren von RabbitMQ-Triggern
Warteschlange(erforderlich)- Name der abzuhörenden Warteschlange.
Verbindungszeichenfolge(erforderlich)- AMQP 0-9-1 URI, z. B.mqp://Gast:Gast@localhost:5672/
Maximale Anzahl gleichzeitiger Nachrichten – Begrenzung der Anzahl gleichzeitig verarbeiteter Nachrichten. Begrenzt im Wesentlichen die Anzahl gleichzeitig laufender Prozesse auf einem einzelnen Agenten. Ein leerer Wert oder ein Wert von 0 wird als unendlich behandelt.
Nachrichtenverarbeitung bei Ausnahme wiederholen - Wenn diese Option aktiviert ist und die erste Prozessausführung aufgrund einer Ausnahme fehlschlägt, wird der Prozess ein zweites Mal ausgeführt.
Antworten - Wenn gesetzt, wird das Ergebnis einer erfolgreichen Prozessausführung an eine Antwortwarteschlange gesendet. Die Antwortwarteschlange ist auf dieAntworten anEigenschaft der Anfrage. Wenn dieAntworten anEigenschaft nicht gesetzt ist, wird die Antwortwarteschlange aufStandard-Antwortwarteschlange.
Antwortfehler - Wenn festgelegt, wird das Ergebnis einer fehlgeschlagenen Prozessausführung an eine Antwortwarteschlange gesendet.
Standard-Antwortwarteschlange - Die Warteschlange, an die Antworten gesendet werden, wennAntworten anEigenschaft ist nicht festgelegt
Triggerdaten für den Prozess
Der Trigger übergibt den Nachrichteninhalt serialisiert als UTF-8-Zeichenfolge an den Prozess. Der Zugriff erfolgt über den#trigger.daten.bodyReferenz.
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.
Antworten auf Nachrichten
Manchmal müssen Sie eine Antwort vom 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 im 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 üblicherweise wie folgt ab:
Der Anrufer entscheidet sich für eine Warteschlange zum Empfangen der Antwort und beginnt, diese abzuhören. Eine Nachricht wird an die vom Trigger abgehörte Warteschlange gesendet, wobei die ReplyTo-Eigenschaft auf die Antwortwarteschlange eingestellt ist. Die correlationId-Eigenschaft kann auch eingestellt werden, um Anfragen und Antworten besser zu korrelieren.
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 Vorgang erfolgreich war und „Antworten“ nicht ausgewählt ist.
Wenn der Vorgang fehlgeschlagen ist und „Antwortfehler“ nicht ausgewählt ist.
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 Textkörper und grundlegenden Eigenschaften), wird die Nachricht als Antwort verwendet. Dadurch 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. Die Eigenschaft CorrelationId wird auf den CorrelationId-Wert aus der Anforderung festgelegt, und einige andere allgemeine Eigenschaften werden auf sinnvolle Werte festgelegt.
Die Antwort wird dann an die in der Eigenschaft „ReplyTo“ angegebene Warteschlange gesendet oder, sofern in der Anforderung keine definiert wurde, an die Standard-Antwortwarteschlange.
Der Anrufer erhält die Antwortnachricht und verarbeitet sie wie gewünscht.
Verwandte ArtikelService Bus-TriggerWarteschlangen-TriggerEinführung in Queue TriggerEinführung in Service Bus TriggerEinführung in RabbitMQ Trigger