Metro-Processors
Um Zwischenergebnisse der verarbeiteten FlowFiles zu erstellen, die im späteren Verlauf eines Datenflusses erneut benutzt werden sollen, können Metro-Processors eingesetzt werden. Hierbei wird zwischen den GetMetro-, PutMetro-, MergeMetro- und ExitMetro-Processors unterschieden, die im Folgenden beschrieben sind.
Ein Anwendungsbeispiel der beschriebenen Processors befindet sich zudem im Abschnitt How-Tos unter Metro.
PutMetro
FlowFiles können mit dem PutMetro-Processor zwischengespeichert werden.
Für die Konfiguration des Processors wird ein MetroLineController-Service benötigt, über den die Kommunikation der Metro-Processors erfolgt.
PutMetro-Processors sind zudem optisch anders dargestellt als andere Processors und ermöglichen dadurch eine bessere Übersicht über den Prozess des Zwischenspeicherns.
GetMetro
Die gespeicherten FlowFiles können im späteren Verlauf des Datenflusses durch einen GetMetro-Processor abgerufen werden.
Hierbei ist wichtig, den gleichen Metro-Controller auszuwählen, der beim Speichern der Daten im PutMetro-Processor genutzt wurde.
Zusätzlich muss das Korrelationsattribut correlation
hinterlegt werden, das über einen dynamischen Property erstellt werden kann.
Als Wert bietet sich hierbei eine individuelle ID an, die genutzt werden kann, um FlowFiles innerhalb der Metro-Verbindung zu unterscheiden.
Im Folgenden ist ein Beispiel der Zwischenspeicherung und des späteren Abrufs der Daten dargestellt:
Wurden die zwischengespeicherten FlowFiles bereits durch einen GetMetro-Processor abgerufen, sind diese nicht mehr verfügbar. Dadurch können Fehler bei weiteren Zugriffsversuchen entstehen. |
ExitMetro
Werden mehrere PutMetro-Processors zur Zwischenspeicherung genutzt, können zudem ExitMetro-Processors genutzt werden, um alle in der Metro vorhandenen FlowFiles zu erhalten. Hierbei werden keine Korrelationsattribute benötigt, da die Abfrage sich nicht auf einzelne FlowFiles, sondern auf alle bezieht.
Ein Anwendungsfall für den ExitMetro-Processor ist, wenn FlowFiles, die von vielen verschiedenen Processors weitergeleitet werden, in einem gemeinsamen Prozess behandelt werden müssen (z.B. bei der Fehlerbehandlung). Die einfachste Lösung wäre, die passenden Relations (z.B. Fehler-Relationen) aller Processors zu einem einzelnen Processor zu führen, welcher den übergeordneten Prozess übernimmt und einleitet.
Dies kann jedoch gerade in komplexen Flows dazu führen, dass zu viele lange Prozesse in die Länge gezogen werden und der Flow überläuft. Verwenden Sie zum Umgehen dieses Problems z.B. mehrere PutMetro-Processors und einen ExitMetro-Processor, der die FlowFiles an den Processor übergibt, welcher wiederum die Fehlerbehandlung übernimmt.
MergeMetro
Über den MergeMetro-Processor kann eine FlowFile mit einer oder mehreren FlowFiles zusammengeführt werden, die von PutMetro-Processors zwischengespeichert wurden. Die FlowFiles werden anhand eines in der Eigenschaft „Correlation Attribute Name“ definierten Attributs abgeglichen.
Um XMLs zusammenzuführen, ist es am einfachsten, wenn die XML-Inhalte keine XML-Deklaration enthalten. Die gewünschte Deklaration für das zusammengeführte XML kann über die Property „Header“ hinzugefügt werden.
Um JSON-Objekte in einem JSON-Array zusammenzuführen, können Sie die Properties "Header", "Footer" und "Demarcator" auf [
, ]
bzw. ,
setzen.