У меня есть требование для обработки любого файла, который помещается в определенную папку. Эти файлы могут иметь одинаковые имена. Позже он будет обработан запатентованным компонентом, который переименует расширение файла на основе повторяющегося статуса имени файла (xxx.origin, если файл никогда не обрабатывался до или xxx.duplicate для противоположного условия).Файл входящего канала адаптера процесса тот же файл одновременно
Основываясь на этом требовании, я решил использовать file-inbound-channel-adapter
, с spring-integration-3.0.8
. Я установил атрибут prevent-duplicates
в false
, поэтому я могу обрабатывать все файлы. Однако я обнаружил, что 1 файл может обрабатываться одновременно 2 file-inbound-channel-adapter
(хотя второй адаптер был создан случайно - дважды инициализирован в контексте и сервлет). Но для меня это проблема, потому что я намеревался создать более 1 file-inbound-channel-adapter
для обработки всех файлов в одной папке, и я получаю результат: 1 входной файл обрабатывается дважды на 2 боба в то же время, выходной файл (xxx.origin и xxx.duplicate). Я также не могу использовать FileLocker
, потому что file-to-string-transformer
не может работать из-за статуса блокировки файла.
Есть ли способ достичь этого?
Привет, Гэри, спасибо за ответ. Мне нужно, чтобы несколько адаптеров опросили один и тот же каталог, потому что моя идея состоит в том, чтобы иметь несколько компонентов для обработки большого количества файлов в каталоге. Поэтому вместо 1 компонента обрабатывать, скажем, 100 файлов, я хочу использовать 4 компонента, чтобы все файлы обрабатывались быстрее. В настоящее время моя конфигурация - это адаптер входящего файла -> text to string transformer -> service activator -> исходящий адаптер. Активатором службы является мой собственный компонент для обработки файла. Поэтому я думаю, что я должен использовать 4 набора вышеуказанных конфигураций. –
Но вы можете добиться того же самого с помощью одного адаптера и объединенного исполнителя задач с 4 потоками. –