在下面的流程中:
<flow name="fileFlow">
<file:inbound-endpoint path="/inbound/ftp/sbc" pollingFrequency="30000" fileAge="30000" moveToDirectory="/inbound/ftp/sbc/archive">
<file:filename-wildcard-filter pattern="*.xml" caseSensitive="false"/>
</file:inbound-endpoint>
<logger message="Entering #[flow.name] flow" level="INFO"/>
<component class="com.abc.RequestFile"/>
<logger message="Payload after transformation is: #[payload] flow" level="INFO"/>
<vm:outbound-endpoint path="merge" />
<logger message="Exiting #[flow.name] flow" level="INFO"/>
</flow>
我从InputStream
获得传递给file:inbound-endpoint
组件的RequestFile
。该组件需要返回一个文件列表,其中一个文件是原始文件读取和传递的文件。我正在寻找一种解决方案,而不是手动将InputStream复制到java组件中的File。
答案 0 :(得分:6)
正如本回答https://stackoverflow.com/a/12397775/387927中所述,您可以使用此设置获取java.io.File
对象而非其内容:
<file:connector name="fileConnector" streaming="false" autoDelete="false">
<service-overrides messageFactory="org.mule.transport.file.FileMuleMessageFactory" />
</file:connector>
请注意,您可以在开始之前或完成处理之后移动/删除文件,否则Mule会一次又一次地轮询它。