У меня есть процесс, который выглядит так.
- Получить набор файлов CSV из папки
- Прочитайте файлы CSV и сохраните содержимое в базе данных.
- Прочитайте данные из базы данных и выполните дополнительную обработку.
Причина разделения шагов 2 и 3 состоит в том, чтобы отделить проблемы, связанные с чтением файлов, от проблем, связанных с обработкой файлов.
Я могу смоделировать это с помощью трех блоков потока данных. У меня проблема в том, что я не хочу запускать блок 3, пока все файлы не будут сохранены в базе данных. Мне нужен какой-то способ определить, что все файлы, полученные в блоке 1, были обработаны блоком 2. В блоке 2 MaxDegreeOfParallelism
будет установлено на Unbounded
— я хочу, чтобы они обрабатывались параллельно.
Я рассматривал возможность использования Encapsulate
в первых двух блоках, но не думаю, что это сработает. Возможно, мне нужно какое-то Batchblock
, но не все партии будут одинакового размера.
Как я могу это сделать? Нужно ли мне создавать свой собственный тип блока?