我正在尝试将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)
...
答案 0 :(得分:0)
如果streaming
连接器上未启用FTP
,则Mule
将尝试将从FTP服务器获取的文件读取为字节[]以用作有效负载MuleMessage。然后流关闭。
如果在streaming
上使用inbound endpoints
,则用户有责任关闭输入流。您可以启用stream
并尝试