Nifi: как получить файл потока на основе файлового фильтра

Я хочу получить потоковые файлы с таким фильтром session.get(fileSize>1), но этот пример не работает для меня, что я должен изменить, чтобы эта задача работала?


person Salome Tkhilaishvili    schedule 03.11.2017    source источник


Ответы (1)


Эта версия session.get() принимает объект FlowFileFilter. В приведенном выше коде вы передаете логическое значение (если в этот момент даже определен fileSize). Хорошей новостью является то, что, поскольку интерфейс FlowFileFilter имеет единственный метод, вы можете использовать принудительное замыкание, чтобы предоставить замыкание как объект FlowFileFilter. Это пример сценария Groovy, принимающего только потоковые файлы, размер которых > 1:

import static org.apache.nifi.processor.FlowFileFilter.FlowFileFilterResult

def flowFiles = session.get({f -> 
   return f.size > 0 ? FlowFileFilterResult.ACCEPT_AND_CONTINUE 
          : FlowFileFilterResult.REJECT_AND_CONTINUE}
 as FlowFileFilter)

flowFiles?.each {session.transfer(it, REL_SUCCESS)}
person mattyb    schedule 03.11.2017