ToPipelineDataEvent@1
Der Node ToPipelineDataEvent@1 wird verwendet, um Daten an den Event Hub von OctoMesh zu senden und so die Kommunikation zwischen Pipelines innerhalb eines DataFlow zu ermöglichen.
Dieser Node unterstützt zwei Kommunikationsmodi:
- Fire-and-Forget (Standard): Veröffentlicht Daten in einem Topic-Exchange. Die sendende Pipeline fährt sofort fort, ohne auf den Abschluss der Ziel-Pipeline zu warten.
- Auf Ergebnis warten: Sendet ein Kommando und blockiert, bis die Ziel-Pipeline abgeschlossen ist, und gibt deren Ergebnis an den Sender zurück.
Das Ereignis löst den Node FromPipelineDataEvent@1 der Ziel-Pipeline aus.
Adapter-Voraussetzungen
- Allgemeine Verfügbarkeit: Alle Adapter unterstützen diesen Node-Typ.
Node-Konfiguration
Zu den Feldern path, targetPath, targetValueWriteMode und targetValueKind siehe Überblick.
| Feld | Typ | Erforderlich | Standard | Beschreibung |
|---|---|---|---|---|
targetPipelineRtId | OctoObjectId | Nein | — | Die Runtime-Entitäts-ID der Ziel-Pipeline. Wenn gesetzt, werden die Daten über den DataFlow-Topic-Exchange mit dieser ID als Routing-Key geleitet. Wenn weggelassen, wird das Ereignis an alle Pipelines im DataFlow gesendet. |
awaitResult | boolean | Nein | false | Wenn true, wird ein Kommando gesendet und auf den Abschluss der Ziel-Pipeline und deren Ergebnisrückgabe gewartet. Wenn false, wird Fire-and-Forget-Pub/Sub verwendet. |
timeoutSeconds | integer | Nein | — | Timeout in Sekunden für den Await-Result-Aufruf. Wird nur verwendet, wenn awaitResult true ist. Wenn weggelassen, gilt das Standard-MassTransit-Request-Timeout. |
resultTargetPath | string | Nein | $.pipelineResult | JSONPath, unter dem das Ergebnis der Ziel-Pipeline im Datenkontext abgelegt wird. Wird nur verwendet, wenn awaitResult true ist. |
Fire-and-Forget-Modus (Standard)
Grundlegende Verwendung (Broadcast an alle Pipelines im DataFlow)
transformations:
- type: ToPipelineDataEvent@1
description: Load to event hub
Gezielte Kommunikation zwischen Pipelines
transformations:
- type: ToPipelineDataEvent@1
description: Send data to a specific pipeline within the DataFlow
targetPipelineRtId: "67e132d6477e78e980bbb512"
In diesem Beispiel werden die Daten im Topic-Exchange des DataFlow mit dem Routing-Key gleich der Runtime-Entitäts-ID der Ziel-Pipeline veröffentlicht. Nur die Pipeline mit einem passenden FromPipelineDataEvent@1-Trigger, der an diesen Routing-Key gebunden ist, erhält die Daten.
Command/Response-Modus (auf Ergebnis warten)
Wenn awaitResult auf true gesetzt ist, wechselt der Node von Pub/Sub zu einem Command/Response-Muster. Die sendende Pipeline blockiert, bis die Ziel-Pipeline abgeschlossen ist, und das Ergebnis des Ziels wird im Datenkontext des Senders unter resultTargetPath abgelegt.
transformations:
- type: ToPipelineDataEvent@1
description: Call target pipeline and wait for result
path: $
targetPath: $
targetPipelineRtId: "67e132d6477e78e980bbb512"
awaitResult: true
timeoutSeconds: 30
resultTargetPath: $.pipelineResult
Nach der Ausführung enthält der Datenkontext des Senders die Ausgabe der Ziel-Pipeline unter $.pipelineResult.
Fehlerweitergabe
Wenn awaitResult true ist und die Ziel-Pipeline fehlschlägt, wird der Fehler an den Sender zurückgegeben. Die Ausführung der sendenden Pipeline schlägt mit einer DataPipelineException fehl, die die Fehlermeldung des Ziels enthält. Die nachfolgenden Transformations-Nodes des Senders werden nicht ausgeführt.
Timeout-Behandlung
Wenn timeoutSeconds konfiguriert ist und die Ziel-Pipeline nicht innerhalb der angegebenen Dauer antwortet, schlägt der Sender mit einer Timeout-Exception fehl.
Voraussetzungen
targetPipelineRtIdist erforderlich, wennawaitResulttrueist.- Beide Pipelines müssen sich im selben DataFlow befinden.
- Die Ziel-Pipeline muss einen
FromPipelineDataEvent@1-Trigger konfiguriert haben.