2016-09-12 3 views
3

ich einen Nifi Prozessor bin der Umsetzung und haben einige Präzisierungen in Bezug auf Best Practices zu machen.Wann session.commit() in einem Nifi Prozessor

  1. session.getProvenanceReporter() ändern (...) - Sollen wir das Ereignis sofort nach jeder Sitzung ausgeben.transfer()
  2. session.commit() - Dokumentation sagt, nach dem Ausführen von Operationen auf Flowfiles, kann entweder Commit oder Rollback aufgerufen werden.

Entwicklerführer: https://nifi.apache.org/docs/nifi-docs/html/developer-guide.html#process_session

Frage ist, was verliere ich durch nicht explizit diese Methoden aufrufen?

Antwort

3

1) Ja In der Regel wird das Provenance-Ereignis nach der Übertragung der Flow-Datei ausgegeben.

2) Es hängt davon ab, ob Sie AbstractProcessor oder AbstractSessionFactoryProcessor erweitern. AbstractProcessor ruft Commit oder Rollback für Sie auf, so dass Sie dies nicht benötigen. In AbstractSessionFactoryProcessor müssen Sie sie entsprechend aufrufen.

Wenn Sie den AbstractSessionFactoryProcessor erweitern und niemals das Commit aufrufen, wird diese Sitzung möglicherweise mit Garbage Collected erfasst und Rollback wird aufgerufen, und alle von dieser Sitzung ausgeführten Operationen werden zurückgesetzt.

Es gibt auch eine Anmerkung @SupportsBatching, die auf einem Prozessor platziert werden kann. Wenn diese Anmerkung vorhanden ist, zeigt die Benutzeroberfläche einen Schieberegler auf der Planungsregisterkarte des Prozessors an, der angibt, wie viele Millisekunden Framework-Operationen wie commit() hinter den Kulissen für erhöhten Durchsatz zusammengefasst werden können. Wenn Latenz wichtiger ist, ist es angemessen, die Folien auf 0 Millisekunden zu belassen, aber der Schlüssel hier ist, dass der Benutzer dies beim Erstellen des Flusses und Konfigurieren des Prozessors entscheiden muss.

Verwandte Themen