如何使用FTP连接器在Anypoint Studio中使用mule上传和下载文件?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用FTP连接器在Anypoint Studio中使用mule上传和下载文件?相关的知识,希望对你有一定的参考价值。

我尝试使用FTP连接器和FileZilla FTP服务器(xampp)。这是我的流程代码和输出。如果我正在使用SFTP,我将输出“连接被外部主机关闭”。

配置XML:

<?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:ftp="http://www.mulesoft.org/schema/mule/ee/ftp" 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/file http://www.mulesoft.org/schema/mule/file/current/mule-file.xsd
http://www.mulesoft.org/schema/mule/ee/ftp http://www.mulesoft.org/schema/mule/ee/ftp/current/mule-ftp-ee.xsd
http://www.mulesoft.org/schema/mule/sftp http://www.mulesoft.org/schema/mule/sftp/current/mule-sftp.xsd">
    <file:connector name="FileRead" readFromDirectory="D:Datainput" autoDelete="false" streaming="true" validateConnections="true" doc:name="File"/>
    <ftp:connector name="FTP" pollingFrequency="1000" validateConnections="true" outputPattern="output.json" doc:name="FTP"/>
    <flow name="ftpFlow">
        <file:inbound-endpoint path="D:Datainput" connector-ref="FileRead" pollingFrequency="100000" responseTimeout="10000" doc:name="File"/>
        <ftp:outbound-endpoint host="127.0.0.1" port="14147" passive="true" responseTimeout="10000" doc:name="FTP" connector-ref="FTP" outputPattern="output.json" password="kamal" path="/" user="kamal"/>
    </flow>
</mule>

控制台输出:

INFO  2018-03-01 13:00:07,218 [[ftp].FileRead.receiver.01] org.mule.transport.file.FileMessageReceiver: Lock obtained on file: D:Datainputexample.json
INFO  2018-03-01 13:00:07,300 [[ftp].FTP.dispatcher.01] org.mule.lifecycle.AbstractLifecycleManager: Initialising: 'FTP.dispatcher.145993108'. Object is: FtpMessageDispatcher
INFO  2018-03-01 13:00:07,305 [[ftp].FTP.dispatcher.01] org.mule.lifecycle.AbstractLifecycleManager: Starting: 'FTP.dispatcher.145993108'. Object is: FtpMessageDispatcher
ERROR 2018-03-01 13:01:12,866 [[ftp].FTP.dispatcher.01] org.mule.retry.notifiers.ConnectNotifier: Failed to connect/reconnect: EEFtpConnector
{
  name=FTP
  lifecycle=start
  this=608b1fd2
  numberOfConcurrentTransactedReceivers=4
  createMultipleTransactedReceivers=true
  connected=true
  supportedProtocols=[ftp]
  serviceOverrides=<none>
}
. Root Exception was: Could not parse response code.
Server Reply: FZS
答案

File Zilla的侦听端口是21.端口14147是管理端口。

另一答案

使用那里提供的小小groovy脚本。这应该工作。我只是测试了这个并按预期工作。删除可以通过autoDelete属性或fileAge来完成。请告诉我这是否有帮助

<flow name="ftptestFlow">
    <ftp:inbound-endpoint host="hostname" port="port" path="path/filename" user="userid" password="password" responseTimeout="10000" doc:name="FTP"/>
    <set-variable variableName="fileName" value="fileName" doc:name="fileName"/>
    <scripting:component doc:name="getFile">
        <scripting:script engine="Groovy"><![CDATA[new File(flowVars.fileName).getText('UTF-8')]]></scripting:script>
    </scripting:component>
    <file:outbound-endpoint path="path" outputPattern="filename" responseTimeout="10000" doc:name="File"/>
</flow>

以上是关于如何使用FTP连接器在Anypoint Studio中使用mule上传和下载文件?的主要内容,如果未能解决你的问题,请参考以下文章

使用 Anypoint 访问管理 - Mulesoft API

无法将自定义 Mule 连接器部署到 Anypoint Exchange

Mule Anypoint Studio - 测试连接失败 - 进行连接测试时出现未知错误 - 自定义 API

如何在 Anypoint Studio 项目中更改 RAML 版本

如何在 Anypoint Studio 和 Design Center 之间进行 RAML 同步

如何在 MuleSoft 中将分支合并为 master(Anypoint 设计中心)