我正在尝试将csv
文件复制到本地目录,然后解析SftpInputStream
。文件已正确复制。但是,尽管我在文件连接器中将streaming
设置为 false
,但似乎file inbound-endpoint
关闭了流,以便我的转换器无法解析流。
如何防止file:outbound-endpoint
在复制文件后关闭stream
?
这些是我的连接器:
<sftp:connector name="mySftpConnector" pollingFrequency="1000" autoDelete="true" />
<file:connector name="myFileOutputConnector" streaming="false" outputPattern="#[header:originalFilename]" />
这是我的流程:
<flow name="myFlow" processingStrategy="synchronous">
<sftp:inbound-endpoint
address="xxx"
connector-ref="mySftpConnector" autoDelete="false">
<file:filename-wildcard-filter pattern="*.csv"/>
</sftp:inbound-endpoint>
<file:outbound-endpoint path="/archive" connector-ref="myFileOutputConnector" />
<transformer ref="mySftpTransformer" />
<component>
<spring-object bean="mySftpHandler" />
</component>
</flow>
引发的异常是:
java.io.IOException: Stream closed
at java.io.BufferedInputStream.getBufIfOpen(BufferedInputStream.java:145)
at java.io.BufferedInputStream.read(BufferedInputStream.java:308)
at org.mule.transport.sftp.SftpInputStream.read(SftpInputStream.java:90)
...
如果未在FTP
连接器上启用streaming
,Mule
将尝试将从 FTP 服务器拾取的文件读取为字节 [] 以用作 MuleMessage 的有效负载。之后流将关闭。
如果在inbound endpoints
上使用streaming
则用户有责任关闭输入流。您可以打开stream
并尝试