Нифи уведомлять / ждать, чтобы уведомить другую цепочку процессора после завершения загрузки FTP - PullRequest
0 голосов
/ 09 января 2019

Nifi Structure

Я пытаюсь получить поток данных с ftp-сервера, который имеет следующую структуру: Папка A -> Файл1, Файл2, ... Файл28 Папка B -> Файл1, Файл2, ... Файл28 FolderC -> File1, File2, ... File28 Эти файлы регулярно обновляются каждые 2 часа один за другим. Каждые 2 часа после того, как все загрузки завершены, я хочу написать флаг-файл, который фактически завершен. Если не все были обновлены вовремя, но хотя бы один (то есть через 10 минут), я все еще хочу написать файл флага, который обрабатывается другими цепочками процессов, которые затем должны иметь дело с отсутствующими данными. Каждая папка нуждается в файле флага: FolderA.flag, FolderB.flag ....

Проблема в том, что я вроде не совсем понимаю, как работает оповещение и ожидание. Я хочу поставить новый Flowfile в ожидании, как только первый файл в папке будет обновлен. Поэтому я поместил атрибут в файлы с правой стороны, который называется «FolderName». Если я подключаю узел ожидания к успеху нового атрибута, я получаю 28 файлов для каждой папки в очередь ожидания. Но я хочу только одного. Вот почему я генерирую новый потоковый файл на стороне поездки (я действительно хотел бы, чтобы этот узел был удален, если это возможно, и узел ожидания был подключен к правой цепочке, потому что я не знаю, какие папки находятся на сервере)

«Идентификатор сигнала выпуска» установлен в «FolderName» как в уведомлении, так и в ожидании. Я не знаю, что установить для «Имя счетчика сигналов», и оно не работает так, как мне бы хотелось. Текущее поведение состоит в том, что каждый раз, когда GenerateFlowFile запускается, узел ожидания на самом деле не ждет, а непосредственно перемещается и запускает файл флага после того, как у меня был один успешный запуск с правой стороны. Нужно ли сбрасывать счетчик триггеров (он не «расходуется»?) Как правильно соединить обе стороны?

enter image description here

Это изображение моего кеша после того, как одна папка прошла. Почему в записи 28 раз, а не один раз с последним счетом? Это также запускает узел ожидания. (Примечание: в настоящее время я для тестирования указал, что он должен называть триггер ожидания / уведомления точно как FolderName и использовать только одну конкретную папку в ListFTP, чтобы улучшить отладку) Но узел ожидания теперь всегда срабатывает. Поскольку кэшированная сущность не истекла или не удалена. Я думаю, я должен удалить это вручную?

...