问题:如何使用mule esb 进行文件传输
应用场景:
局域网内不同服务器之间共享文件夹的形式传入文件,采用mule esb 实现共享文件夹之间文件传递的自动化,example: 服务器一(ip:10.66.88.1)上有个input共享文件夹,服务器二(10.66.88.2)上有个output文件夹,服务器一产生生成文件到input共享文件夹,人工copy到服务器二的output文件夹,服务器二再从output文件夹读取数据,mule esb文件传输,解决服务器一上的文件夹到服务器二output文件夹同步的问题。
上面废话了一大堆,一句话概括:mule esb 文件传输:从一个文件夹把对应文件传输到另外一个文件夹。
关于共享文件夹和FTP传输文件的区别猛戳这里
组件: mule file connector
直接上例子
<?xml version="1.0" encoding="UTF-8"?>
<mule xmlns:file="http://www.mulesoft.org/schema/mule/file" 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" version="EE-3.6.1"
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">
<!-- Typical Connector for Inbound Endpoint: Read files -->
<file:connector name="input" autoDelete="true" pollingFrequency="1000" doc:name="File" />
<!-- Typical Connector for Outbound Endpoint: Write files -->
<file:connector name="output" outputAppend="false" doc:name="File" />
<flow name="filetestFlow">
<file:inbound-endpoint connector-ref="input"
path="D:\mule\test\input" doc:name="File" responseTimeout="10000" />
<file:outbound-endpoint connector-ref="output"
path="D:\mule\test\output" doc:name="File" responseTimeout="10000" />
</flow>
</mule>
说明一:
<file:connector name="input" autoDelete="true" pollingFrequency="1000" doc:name="File" />
<file:connector name="output" outputAppend="false" doc:name="File" />
<flow name="filetestFlow">
<file:inbound-endpoint connector-ref="input"
path="D:\mule\test\input" doc:name="File" responseTimeout="10000" />
<file:outbound-endpoint connector-ref="output"
path="D:\mule\test\output" doc:name="File" responseTimeout="10000" />
</flow>
如果想对文件夹下有规则的文件名和后缀进行过滤代码如下
如果想对读取的文件进行备份
如果需要文件正在写入时读取不报错
看如下示例代码片段
<file:connector name="input1" autoDelete="false" fileAge="10000" recursive="true" pollingFrequency="1000" workDirectory="D:\mule\test\work" workFileNamePattern="#[message.inboundProperties[‘originalFilename‘]]" />
<file:connector name="output1" outputAppend="false"/>
<flow name="moveFile">
<file:inbound-endpoint connector-ref="input1" path="D:\mule\test\input1"
moveToDirectory="D:\mule\test\backup"
moveToPattern="#[message.inboundProperties[‘originalFilename‘]].backup"
>
<file:filename-wildcard-filter pattern="*.txt,*.xml,*.docx" />
</file:inbound-endpoint>
<file:outbound-endpoint connector-ref="output1" path="D:\mule\test\output1"
outputPattern="#[function:datestamp:dd-MM-yy]-#[message.inboundProperties[‘originalFilename‘]]"
/>
</flow>
在属性中也可以使用如下表达式
以上应用环境mule esb 3.6.1
参考文档:file connector
原文地址:http://blog.csdn.net/topwqp/article/details/46238987