Работа onTrigger - пользовательский процессор nifi - PullRequest
0 голосов
/ 11 июня 2019

Я только начал изучать пользовательский процессор в nifi. Я хочу понять конкретный случай работы onTrigger. Я выполняю некоторые операции в функции onTrigger , используя значения свойств, которые определены в интерфейсе процессора потока nifi.

Пример: Значение свойства в пользовательском процессоре принимает строку, разделенную символом ',', а в функции onTrigger я пишу код, который преобразует строку в массив строк и удаляет дополнительные пробелы.

У меня вопрос: будет ли эта операция выполняться каждый раз, когда потоковый файл проходит через пользовательский процессор, или он будет преобразован только один раз.

Я пытался просмотреть официальную документацию по разработке, но не смог найти информацию по этому

1 Ответ

3 голосов
/ 11 июня 2019

Java-код процессора компилируется при запуске сборки Maven для создания файла NAR. Код не скомпилирован самим NiFi.

Затем вы развертываете файл NAR в экземпляре NiFi, помещая его в каталог lib, а затем используете компоненты из этого NAR в своем потоке, добавляя их на холст.

Когда компонент находится на холсте и запускается, вызывается метод onTrigger в соответствии со стратегией планирования.

Независимо от того, какой код находится в onTrigger, он будет запускаться для каждого выполнения процессора, поэтому ваш код для чтения свойства и разделения значения будет выполняться каждый раз.

Если свойство поддерживает язык выражений из потоковых файлов, вам нужно каждый раз запускать этот код в onTrigger, потому что результирующее значение может быть разным для каждого потокового файла.

если свойство не поддерживает язык выражений из потоковых файлов, вы можете вместо этого использовать метод с @OnScheduled и обрабатывать значение свойства во все, что вам нужно, и сохранять в переменной-члене процессора, таким образом, это только происходит один раз.

...