#apache-nifi
#apache-nifi
Вопрос:
У меня три PutSQL
процессора. В теории я мог бы выполнить их в простом порядке: 1 - 2 - 3
поскольку только третий процессор должен выполняться после первых двух, но 1
и 2
также может выполняться одновременно, поскольку они независимы друг от друга.
Чтобы ускорить работу, я хотел бы запустить 1 и 2 одновременно и запустить третий только после того, как оба были успешными:
1 ---
----> 3
2 ---/
Я ничего не смог найти в документах (или, может быть, я просто искал неправильные ключевые слова), но есть ли процессор, который работает как AND
оператор?
В идеале процессор ожидает сообщений об успешном завершении 1
и 2
перед отправкой сообщения об успешном 3
завершении.
Ответ №1:
В этом ca вы бы использовали MergeContent с общим corrleation_id Будет что-то вроде:
1 ---
A-/ Merge on A ----> 3
2 ---/
Установите слияние следующим образом:
Вы должны получить один потоковый файл для запуска вашего последнего шага
Комментарии:
1. Какое значение должна иметь строка «my_correlation_id»? И где мне указать его, кроме
MergeContent
процессора? Я предполагаю, что «A» — это другой (например, PutSQL) процессор перед двумя, аMergeContent
процессор после1
и2
?2. Я буквально ввел,
my_correlation_id
и настройка, похоже, все еще работает… Я немного запутался, для чего нужен идентификатор.3. Из документации: «Если указано, подобные потоковые файлы будут объединены вместе, где «подобные потоковые файлы» означают потоковые файлы, которые имеют одинаковое значение для этого атрибута. Если не указано, потоковые файлы объединяются в том порядке, в котором они извлекаются из очереди.» -> поскольку я фактически не передаю данные, а только
success
сообщения, я думаю, я могу оставить его пустым.4. Да, он объединит содержимое на основе идентификатора корреляции, но поскольку вас не интересует содержимое, оно объединяется, как только количество записей будет удовлетворено