Spring Integration 1.0 RC2: потоковое содержимое файлов? - PullRequest
1 голос
/ 10 декабря 2008

Я пытался найти информацию по этому вопросу, но из-за незрелости среды Spring Integration мне не повезло.

Вот мой желаемый рабочий процесс:

  1. Новые файлы помещаются в папку «Входящие»

  2. Файлы выбираются с помощью файла: входящий-канальный адаптер

  3. Содержимое файла передается по N строк за раз в канал «Этап 1», который разбивает строку на промежуточное (общее) представление.

  4. Эта проанализированная линия направляется на несколько каналов «Этап 2».

  5. Каждый канал «Этап 2» выполняет собственную обработку N доступных строк, чтобы преобразовать их в окончательное представление. Этот канал должен иметь очередь, которая гарантирует, что ни один канал стадии 2 не будет перегружен в случае, если один канал обрабатывает значительно медленнее, чем другие.

  6. Окончательное представление N строк записывается в файл. Выходных файлов будет столько же, сколько было получателей маршрутизации на шаге 4.

** «N» выше обозначает любое разумное количество строк для чтения за один раз, из [1, все, что я могу вписать в память разумно], но гарантированно всегда будет меньше, чем количество строк в полном файл. *

Как выполнить потоковую передачу (шаги 3, 4, 5) в Spring Integration? Это довольно легко сделать без потоковой передачи файлов, но мои файлы достаточно велики, и я не могу прочитать весь файл в память.

В качестве примечания, у меня есть рабочая реализация этого рабочего процесса без Spring Integration, но, поскольку мы используем Spring Integration в других местах нашего проекта, я хотел бы попробовать его здесь, чтобы увидеть, как он работает и как полученный код сравнивается по длине и ясности.

1 Ответ

1 голос
/ 08 мая 2010

Это очень интересный вариант использования, который мне очень жаль, что я так долго его пропустил. Это определенно стоит создать проблему для. На данный момент у нас есть поддержка в Spring Integration для сбора файлов и отправки ссылок на них . Существует также некоторая элементарная поддержка для преобразования файлов в байт [] или строку.

Ответ заключается в том, что теперь вы должны выполнить шаг 2 в пользовательском коде Java, отправив блоки на канал стадии 2. Я бы не рекомендовал отправлять ссылки на потоки вокруг как полезные сообщения.

...