Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
575 views
in Technique[技术] by (71.8m points)

java - How to close input stream of FTP inbound endpoint in Mule when streaming is used

I have a very simple configuration which copies the file from FTP server to file outbound. I am using streaming for file transfer because of huge file sizes. This is my config:

 <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>

I am not sure how to close the input-stream so that files are deleted from FTP server once they are copied.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

Since the payload is an InputStream, the following code of the file outbound endpoint dispatcher will be executed:

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

So the stream should be automatically closed for you.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...