Einführung in RabbitMQ Trigger

Prozessentwicklung

RGeschrieben vonRiku Virtanen Vor über einer Woche aktualisiertTable of contents

RabbitMQ-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 anEigenschaft der Anfrage. Wenn dieAntworten anEigenschaft 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 dieAntworten anEigenschaft 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 derAntworten anEigenschaft auf die Antwortwarteschlange gesetzt. DieKorrelations-IDDie 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 undAntwortist nicht ausgewählt.

    • Wenn der Prozess fehlgeschlagen ist undAntwortfehlerist 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 einemKörperUndGrundlegende 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-IDDie Eigenschaft ist auf den WertKorrelations-IDWert aus der Anfrage und einige andere allgemeine Eigenschaften, die auf sinnvolle Werte gesetzt sind.

  • Die Antwort wird dann an die Warteschlange gesendet, die in derAntworten anEigenschaft, 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.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.

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