Процессор, зависящий от двух предыдущих процессоров

#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. Да, он объединит содержимое на основе идентификатора корреляции, но поскольку вас не интересует содержимое, оно объединяется, как только количество записей будет удовлетворено