mule esb 文件传输
来源:互联网 发布:滴答清单 windows 编辑:程序博客网 时间:2024/05/18 00:06
问题:如何使用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.xsdhttp://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsdhttp://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:connecctor 采用file的方式进行连接
- name=”input”命名是了后期使用引用
- autoDelete=”true” 读取后自动删除文件
- pollingFrequency=”1000” 轮询频率 1000代表1000毫秒=1秒
<file:connector name="output" outputAppend="false" doc:name="File" />
- outputAppend=”false”导出的文件时是否追加文件还是覆盖 false代表覆盖,true 代表追加
<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>
- path是导入的文件路径,如果是局域网内的共享文件夹,就是共享文件夹路径:exampe:path=”\10.66.88.1\input”代表10.66.88.1下面的共享文件夹
- connector-ref=”input”代表引用上面定义的file:connector
- responseTimeout=”10000”不响应或者出错,10秒以后再次扫描
- file:inbound-endpoint 代表文件输入端
- file:outbound-
- endpoint代表文件输出端
如果想对文件夹下有规则的文件名和后缀进行过滤代码如下
如果想对读取的文件进行备份
如果需要文件正在写入时读取不报错
看如下示例代码片段
<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>
- fileAge=”10000”如果文件文件正在写入,此时进行读取,没有fileAge会报错,fileAge代表正在写入的文件时,等上10秒再进行读取,这时不会报错。
- workDirectory=”D:\mule\test\work” 读取时的备份的文件目录
- workFileNamePattern=”#[message.inboundProperties[‘originalFilename’]]” 读取时备份的文件的文件名生成规则,[message.inboundProperties[‘originalFilename’]]代表用mule expression 语法,代表取输入文件的源文件文件名
- moveToDirectory=”D:\mule\test\backup” 也代表读取文件时,对文件进行再次备份的生成目录,如果connnector中定义,file:inbond-endpoint也定义,以 file:inbond-endpoint定义的为准,即后者会覆盖前者的定义
- moveToPattern=”#[message.inboundProperties[‘originalFilename’]].backup” 同理备份文件的命名的规则
- 代表只读取txt,xml,docx的文件类型,也支持表达式可以定义更加复杂的读取规则
- outputPattern=”#[function:datestamp:dd-MM-yy]-#[message.inboundProperties[‘originalFilename’]]”输出文件的命名格式
在属性中也可以使用如下表达式
- #[function:dateStamp]
- #[function:datestamp:dd-MM-yy]
- #[function:systime]
- #[function:uuid]
- #[message.inboundProperties.originalFilename]
- #[function:count]
- #[message.inboundProperties[‘messagepropertyname’]
以上应用环境mule esb 3.6.1
参考文档:file connector
2 0
- mule esb 文件传输
- Mule ESB
- mule esb
- Mule ESB
- ESB构架的MULE
- Mule esb简介
- Mule ESB 学习笔记
- Mule ESB 学习笔记
- mule esb 简介(摘要)
- Mule ESB 学习笔记
- Mule ESB安装
- mule esb 3.X
- Mule ESB 学习笔记
- mule ESB总结
- Mule ESB 学习笔记
- Mule ESB 学习笔记
- Mule ESB 学习笔记
- MULE ESB功能介绍
- Android 自定义绘制圆形进度条(扩展性强!)
- LeetCode 001_Two Sum Java
- JavaScript特效实例018-下降式浏览器
- 关于Xcode6模拟器 键盘不显示和没有中文输入法的解决方案
- 谷歌在2015 I/O大会都说了什么?干货都在这
- mule esb 文件传输
- PostgreSQL数据库管理入门之psql工具篇
- 乐视网客户端 v7.2.1.482 官方版下载
- Servlet规范及实现
- Oracle的用户解锁与修改密码
- 编写高质量的代码——从命名入手
- 好看工行和法规和
- nginx中的ngx_command_t结构中的set方法在何时调用
- 完善的制度才能保证平稳发展