#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 может содержать много потоковых файлов, но я ищу уникальный идентификатор при каждом запуске моего шаблона.