2013-07-31 77 views
0

我有一個非常簡單的配置,它將文件從FTP服務器複製到文件出站。由於文件大小很大,我使用streaming進行文件傳輸。這是我的配置:如何在使用流時關閉Mule中FTP入站端點的輸入流

<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

騾應該自動爲你照顧,是不是這樣? –

+0

不是當我在ftp連接器上有'streaming = true'時。 _。如果在入站端點上使用流式傳輸,則用戶關閉輸入流的責任。如果在出站端點上使用流式傳輸,Mule將自動關閉流式傳輸。[from this link] 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

但是如果我有'streaming = true',蒼蠅不會從FTP服務器上刪除。如果我在FTP連接器上刪除'streaming = true',那麼文件會自動刪除 –

+0

這聽起來像是另一個問題。 –

+0

你說得對。雖然我打算問如何刪除文件,但有這樣的想法,如果輸入流被關閉,文件將被自動刪除 –