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