Zum Hauptinhalt springen

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.

FeldTypErforderlichStandardBeschreibung
targetPipelineRtIdOctoObjectIdNein—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.
awaitResultbooleanNeinfalseWenn 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.
timeoutSecondsintegerNein—Timeout in Sekunden für den Await-Result-Aufruf. Wird nur verwendet, wenn awaitResult true ist. Wenn weggelassen, gilt das Standard-MassTransit-Request-Timeout.
resultTargetPathstringNein$.pipelineResultJSONPath, 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​

  • targetPipelineRtId ist erforderlich, wenn awaitResult true ist.
  • Beide Pipelines müssen sich im selben DataFlow befinden.
  • Die Ziel-Pipeline muss einen FromPipelineDataEvent@1-Trigger konfiguriert haben.