2013-07-31 4 views
0

У меня очень простая конфигурация, которая копирует файл с FTP-сервера в исходящий файл. Я использую streaming для передачи файлов из-за огромных размеров файлов. Это мой конфиг:Как закрыть входной поток входящей конечной точки FTP в Mule при потоковой передаче

<ftp:connector name="ftpConnector" streaming="true" pollingFrequency="360000"/> 

    <flow name="copyFTPtoFile"> 
     <ftp:inbound-endpoint name="FTP" connector-ref="ftpConnector" host="FTP" port="21" user="test" password="test" path="/Testenv" /> 
     <file:outbound-endpoint path="/vendor/in" /> 
    </flow> 

Я не знаю, как закрыть input-stream так, что файлы будут удалены с FTP-сервера, как только они будут скопированы.

+0

Mule должен позаботиться об этом автоматически для вас, не так ли? –

+0

нет, когда у меня есть 'streaming = true' на ftp-коннекторе. _. Если потоковая передача используется на входящих конечных точках, это ответная реакция пользователя на закрытие входного потока. Если потоковая передача используется на исходящих конечных точках, Mule автоматически закрывает поток ._ из этой [ссылки] http://www.mulesoft.org/documentation/display/current/FTP+Transport+Reference –

+0

Они, вероятно, означают, что вы получаете поток в пользовательский компонент. –

ответ

1

Поскольку полезная нагрузка является InputStream, следующий код file outbound endpoint dispatcher будет выполняться:

InputStream is = event.transformMessage(DataTypeFactory.create(InputStream.class)); 
IOUtils.copyLarge(is, fos); 
is.close(); 

Таким образом, поток должен быть автоматически закрыт для вас.

+0

, но мухи не удаляются с FTP-сервера, если у меня есть 'streaming = true'. Если я удаляю 'streaming = true' на FTP-коннектор, файлы автоматически удаляются –

+0

Это звучит как еще один вопрос для меня. –

+0

Вы правы. Хотя я намерен спросить, как удалить файлы, но имел это понятие, что если поток ввода закрыт, файлы будут автоматически удалены. –

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