2016-12-27 3 views
0

У меня есть ряд процессоров GenerateTableFetch, которые отправляют Flowfiles в процессор Upstream UpdateAttributes. Из UpdateAttributes, то Flowfile передается в процессор ExecuteSQL:Доступ к атрибутам очереди?

enter image description here

Есть ли способ, чтобы добавить атрибут в файл потока отрываясь очередь с положением этого Flowfile в очереди? Например, после того, как я сброшу/очистите состояние для GenerateTableFetch, я хотел бы знать, является ли это первой партией Flowfiles, поступающей из GenerateTableFetch. Я могу видеть позицию FlowFile в очереди, но было бы замечательно, что я мог бы добавить это как атрибут, который передается вниз по течению. Это возможно?

enter image description here

ответ

1

Это не доступна функция в Apache Nifi. Позиция файла потока в очереди является динамической и будет изменяться по мере удаления файлов потока из очереди либо путем обработки по нисходящему потоку, либо путем истечения потока файлов.

Если вы просто пытаетесь определить, если очередь была пуста, прежде чем был добавлен определенный flowfile, лучшее решение в это время, вероятно, использовать ExecuteScript процессор, чтобы получить желаемое соединение через API REST, а затем использовать FlowFileQueue#isActiveQueueEmpty() для определите, является ли указанная очередь пустой в настоящее время, и добавьте в файл потока логический атрибут, указывающий, что это «первая из партии» или любая логика, которую вы хотите применить.

«Партии» на самом деле не являются концепцией NiFi. Есть ли конкретное действие, которое вы хотите предпринять с помощью «первого» потока файла? Возможно, существует и другая логика (т. Е. Процессор ExecuteSQL не работал в потоковом файле за x секунд и т. Д.), Что может вызвать желаемое поведение.

Смежные вопросы