Я пытался найти информацию по этому вопросу, но из-за незрелости среды Spring Integration мне не повезло.
Вот мой желаемый рабочий процесс:
Новые файлы помещаются в папку «Входящие»
Файлы выбираются с помощью файла: входящий-канальный адаптер
Содержимое файла передается по N строк за раз в канал «Этап 1», который разбивает строку на промежуточное (общее) представление.
Эта проанализированная линия направляется на несколько каналов «Этап 2».
Каждый канал «Этап 2» выполняет собственную обработку N доступных строк, чтобы преобразовать их в окончательное представление. Этот канал должен иметь очередь, которая гарантирует, что ни один канал стадии 2 не будет перегружен в случае, если один канал обрабатывает значительно медленнее, чем другие.
Окончательное представление N строк записывается в файл. Выходных файлов будет столько же, сколько было получателей маршрутизации на шаге 4.
** «N» выше обозначает любое разумное количество строк для чтения за один раз, из [1, все, что я могу вписать в память разумно], но гарантированно всегда будет меньше, чем количество строк в полном файл. *
Как выполнить потоковую передачу (шаги 3, 4, 5) в Spring Integration? Это довольно легко сделать без потоковой передачи файлов, но мои файлы достаточно велики, и я не могу прочитать весь файл в память.
В качестве примечания, у меня есть рабочая реализация этого рабочего процесса без Spring Integration, но, поскольку мы используем Spring Integration в других местах нашего проекта, я хотел бы попробовать его здесь, чтобы увидеть, как он работает и как полученный код сравнивается по длине и ясности.