2013-09-27 3 views
1

У меня есть FTP-оконечный опрос в FTP-папку для новых файлов. Из-за проблем параллелизма мы имеем при обработке файлов, мы решили иметь только один активный поток для соединителя FTP:Ошибка при передаче мула FTP при удалении файла

<ftp:connector name="ftp" doc:name="FTP" pollingFrequency="1000" validateConnections="true"> 
    <receiver-threading-profile maxThreadsActive="1" maxBufferSize="1000" /> 
    <reconnect count="5" frequency="1000"/> 
</ftp:connector> 

Проблема у нас в том, что процесс мы выполняем на файлах может занять до нескольких минут , что делает FTP-соединение тайм-аутом, поэтому, когда поток завершается, и FTP-коннектор пытается окончательно удалить файл, мы получаем исключение, потому что время ожидания соединения.

Я предполагаю, что конечная точка FTP должна проверить соединение перед попыткой удалить файл, но это не похоже на это.

Есть ли способ решить эту проблему?

+0

У меня была аналогичная проблема, и я использовал компонент в конце потока, чтобы удалить файл в исходном местоположении ftp, компонент был помещен в конец потока, рассмотрел ли вы эту опцию? – Sudarshan

ответ

0

Установите стратегию обработки потока на synchronous, чтобы мобилизовать поток опроса и выполнить обработку с ним, чтобы он не смог снова опросить вас раньше.

+0

Я установил его синхронно. Проблема в том, что после завершения обработки, когда конечные точки FTP пытаются удалить файл, соединение уже отключено, поэтому он не работает. – dgaviola

+1

Удалите файл, даже если обработка завершилась неудачно? Если да, используйте трансформатор «объект-байт-массив» после «ftp: inbound» и поместите код обработки в блок «», таким образом он не будет блокировать поток FTP. –

+0

Да, я делал это. Но поскольку мы сталкиваемся с проблемами параллелизма, мне приходилось создавать очереди и обрабатывать один за другим. Мне не нравится, что он будет читать все файлы, удалять их, а затем, если что-то пойдет не так, эти файлы будут потеряны. Я думаю, что сначала перенесите исходный файл в разные места на FTP и попросите FTP-конечную точку опросить другую папку. Если что-то пойдет не так, у меня все еще есть файл в другой папке и можно скопировать его в папку «ошибка» для последующего анализа. – dgaviola

0

Поскольку FTP-соединение может быть отключено, лучше скопировать файлы с FTP в папку «Файл», прежде чем приступать к их обработке.

+0

Спасибо за предложение. Я не могу скопировать файл в локальную папку, потому что приложение будет развернуто в среде, где у меня нет доступа к файловой системе. Спасибо, в любом случае. – dgaviola

Смежные вопросы