NIFI получает доступ к идентификатору заявки на контент с помощью Groovy

#apache-nifi

#apache-nifi

Вопрос:

Мне нужно генерировать уникальный идентификатор при каждом запуске моего процесса. Мой процесс начинается с процессора GetSFTP.

Я думал об использовании идентификатора утверждения содержимого flowfile для этой цели.

Как получить к нему доступ с помощью Groovy? Заранее спасибо!

Файл потока

Ответ №1:

В общем, вы можете зависеть от уникальности атрибута flowfile uuid . Каждый потоковый файл в системе генерирует его при создании, поэтому потоковые файлы, поступающие из GetSFTP , будут иметь этот атрибут заполненный и уникальный. Чтобы получить доступ к uuid атрибуту из Groovy (в скрипте или пользовательском процессоре), используйте код flowfile.uuid или flowfile.getAttribute('uuid') .

Идентификатор заявки на содержимое определенно не уникален — это ссылка на определенное местоположение в файловой системе (или на другой носитель, если он настроен), ссылающийся на байты содержимого потокового файла. Многие потоковые файлы могут иметь один и тот же идентификатор утверждения содержимого.

Вы также можете сгенерировать уникальный идентификатор с помощью UUID() функции на языке выражений Apache NiFi и при необходимости поместить его в атрибут или содержимое с помощью интерполяции (т.Е. ${UUID()} ).

Комментарии:

1. Я добавил свойство с именем myId со значением $ {UUID()}, как и предлагалось. Но это выдает мне следующую ошибку: ‘Myid’, проверенный с помощью ‘$ {UUID()}’, недействителен, потому что ‘Myid’ не является поддерживаемым свойством или с ним не связан валидатор.

2. Кроме того, причина, по которой я не могу использовать flowfile.uuid, заключается в том, что мой GetSFTP может содержать много потоковых файлов, но я ищу уникальный идентификатор при каждом запуске моего шаблона.