2017-05-25 5 views
0

Ich mache Datenaufnahme von Remote-API-Service für verschiedene Zeitbereiche in meinem benutzerdefinierten NiFi-Prozessor.Apache NiFi: FlowFileHandlingException bei der Übertragung FlowFile in benutzerdefinierten Prozessor

Ich habe Zeitbereiche globalen Zähler, der mit jeder Iteration aktualisiert (Ich verwende Timer-gesteuerte Zeitplanungsstrategie).

Wenn der Zähler größer als der Maximalwert ist, möchte ich nur Flowfile übertragen von Anfrage (session.get()) mit ERFOLG Beziehung, dh ohne zusätzliche Logik auszuführen:

session.transfer(requestFlowFile, SUCCESS); 

ich, dass ich undestand Der Prozessor kann nicht angehalten oder angehalten werden, wenn die Erfassung der Zeitbereiche beendet ist. Also versuche ich den obigen Ansatz als Lösung zu verwenden.

Alle Iterationen geht gut, bis der Zähler größer geworden ist als der maximale und der Prozessor versucht Flowfile von Anfrage zu übertragen (session.get())

So haben ich diese Ausnahme:

fehlgeschlagen Sitzung verarbeiten aufgrund org.apache.nifi.processor.exception.FlowFileHandlingException: StandardFlowFileRecord [uuid = 459e615b-0ff5-424f-aac7-f95d364cdc13, behaupten =, offset = 0, name = 99628180019265, size = 0] wird in dieser Sitzung

nicht bekannt

Was ist hier falsch? Oder könnte ein anderer Ansatz sein?

Antwort

1

Dieser Fehler bedeutet, dass die an session.transfer() übergebene Flussdatei von einer anderen Sitzung kam. Sie können transfer() nur für dieselbe Sitzung aufrufen, von der Sie get() aufgerufen haben.

0

Wenn es ein benutzerdefinierter Prozessor ist - tun Sie einfach nicht session.get() und überspringen Sie diese Ausführung ohne etwas zu übertragen.

oder wenn Sie eingehende Datei eine Entscheidung treffen Sie sie bekommen können, einige Prüfungen zu tun, und Rollback auf die aktuelle Sitzung mit penalize rollback(true), so dass die Datei (en), die Sie in der eingehenden Warteschlange während Penalty Duration Prozessorparameter erhalten bleiben ohne toggering rocessor zu laufen.

oder können Sie tun session.get(FlowFileFilter) aus eingehenden Warteschlange nur Dateien zu erhalten, die Ihre Logik Spiele

Verwandte Themen