Mule SFTP组件组件

时间:2018-07-31 15:40:05

标签: mule-studio mule-component mule-esb

我正在开发m子流程,其中m子进程必须将文件(从源目录)上传到SFTP服务器。

IN文件夹(此文件夹包含要传输到SFTP的文件)

我的below子流量低于

<?xml version="1.0" encoding="UTF-8"?>

<mule xmlns:file="http://www.mulesoft.org/schema/mule/file" xmlns:sftp="http://www.mulesoft.org/schema/mule/sftp" xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:doc="http://www.mulesoft.org/schema/mule/documentation"
       xmlns:spring="http://www.springframework.org/schema/beans" 
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-current.xsd
http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
http://www.mulesoft.org/schema/mule/sftp http://www.mulesoft.org/schema/mule/sftp/current/mule-sftp.xsd
http://www.mulesoft.org/schema/mule/file http://www.mulesoft.org/schema/mule/file/current/mule-file.xsd">
    <flow name="sftpFlow1">
        <poll doc:name="Poll">
            <fixed-frequency-scheduler frequency="30" startDelay="10" timeUnit="SECONDS"/>
            <logger message="Hi" level="INFO" doc:name="Logger"/>
        </poll>
        <flow-ref name="sftpSub_Flow" doc:name="Flow Reference"/>
    </flow>
    <sub-flow name="sftpSub_Flow">
        <file:outbound-endpoint path="D:\IN" responseTimeout="10000" doc:name="File"/>
        <sftp:outbound-endpoint exchange-pattern="one-way" host="host" port="port" path="sftppath" user="user" password="password" responseTimeout="10000" doc:name="SFTP"/>
    </sub-flow>

</mule>

问题: 我没有看到任何错误或异常,但预期IN文件夹中的文件没有传输SFTP服务器。每当子流执行时,我都会看到****。dat文件。

有什么建议吗?

2 个答案:

答案 0 :(得分:1)

这里您已经使用了两个出站端点。您需要文件入站端点组件才能从源位置选​​择文件。 请参阅下面的样本以进一步了解 https://dzone.com/articles/anypoint-file-connector-with-mulesoft

您可以在sftpoutbound端点中使用outputPattern属性来更改具有任何扩展名的文件名

答案 1 :(得分:0)

由于该应用程序实际上未显示任何输入,因此我假设该示例存在缺陷,但实际的应用程序具有一些以流模式读取的入站终结点(例如,文件入站终结点)。子流尝试消耗两次输入流以输出到两个出站端点。因为第一个消耗了流,第二个消耗了SFTP,SFTP获得了一个消耗的空流作为输入,因此它不输出任何内容。一种解决方案是将输入转换为内存中的某些内容,例如使用对象到中间的字节数组转换器。请注意,对于大文件,这样做可能会耗尽内存。