mule esb 文件传输

问题:如何使用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" />
  1. file:connecctor 采用file的方式进行连接
  2. name=”input”命名是了后期使用引用
  3. autoDelete=”true” 读取后自动删除文件
  4. pollingFrequency=”1000” 轮询频率 1000代表1000毫秒=1秒
<file:connector name="output" outputAppend="false" doc:name="File" />
  1. 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>
  1. path是导入的文件路径,如果是局域网内的共享文件夹,就是共享文件夹路径:exampe:path=”\10.66.88.1\input”代表10.66.88.1下面的共享文件夹
  2. connector-ref=”input”代表引用上面定义的file:connector
  3. responseTimeout=”10000”不响应或者出错,10秒以后再次扫描
  4. file:inbound-endpoint 代表文件输入端
  5. file:outbound-
  6. 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> 
  1. fileAge=”10000”如果文件文件正在写入,此时进行读取,没有fileAge会报错,fileAge代表正在写入的文件时,等上10秒再进行读取,这时不会报错。
  2. workDirectory=”D:\mule\test\work” 读取时的备份的文件目录
  3. workFileNamePattern=”#[message.inboundProperties[‘originalFilename’]]” 读取时备份的文件的文件名生成规则,[message.inboundProperties[‘originalFilename’]]代表用mule expression 语法,代表取输入文件的源文件文件名
  4. moveToDirectory=”D:\mule\test\backup” 也代表读取文件时,对文件进行再次备份的生成目录,如果connnector中定义,file:inbond-endpoint也定义,以 file:inbond-endpoint定义的为准,即后者会覆盖前者的定义
  5. moveToPattern=”#[message.inboundProperties[‘originalFilename’]].backup” 同理备份文件的命名的规则
  6. 代表只读取txt,xml,docx的文件类型,也支持表达式可以定义更加复杂的读取规则
  7. outputPattern=”#[function:datestamp:dd-MM-yy]-#[message.inboundProperties[‘originalFilename’]]”输出文件的命名格式


在属性中也可以使用如下表达式

  1. #[function:dateStamp]
  2. #[function:datestamp:dd-MM-yy]
  3. #[function:systime]
  4. #[function:uuid]
  5. #[message.inboundProperties.originalFilename]
  6. #[function:count]
  7. #[message.inboundProperties[‘messagepropertyname’]

以上应用环境mule esb 3.6.1

参考文档:file connector

时间: 2024-11-05 06:26:01

mule esb 文件传输的相关文章

Mule ESB 自带例子hello初体验

1 配置的流的效果图 2 应用配置文件hello.xml内容 1 <?xml version="1.0" encoding="UTF-8"?> 2 3 <mule xmlns:vm="http://www.mulesoft.org/schema/mule/vm" xmlns:http="http://www.mulesoft.org/schema/mule/http" xmlns="http://w

mule esb exception(一)

mule esb 异常分类 system exception message exception 系统异常出现的两种情况: 应用启动时出的异常 连接外部系统时出现的异常 for example:读取文件,当文件正在写入时,file connector endpoint去读这个文件,出现的异常即为系统异常,stackoverflow也有相关参考 系统异常相当于java中的Error 由于系统异常处于应用不可用状态,重点分析 message exception Message Exception m

EnjoyingSoft之Mule ESB基础系列第二篇:Mule ESB基本概念

目录 1. 使用Anypoint Studio开发 2. Mule ESB Application Structure - Mule ESB应用程序结构 3. Mule ESB Application整体构造 4. Mule ESB构造元素 - Flow 5. Mule ESB构造元素 - Connector 6. Mule ESB构造元素 - Processor Mule ESB在众多开源的ESB中处于领先者的地位,MuleSoft公司也作为独角兽,2017年在纽交所上市.我们作为MuleSo

EnjoyingSoft之Mule ESB基础系列第三篇:Mule message structure - Mule message结构

目录 1. 探索Mule Message结构 2. Mule Message的Payload 3. Mule Message的Property 4. Mule Message的Attachment 5. Mule的Variable 6. 使用Java操作Mule Message Mule ESB是一个使用Java语言编写的开源企业服务总线,企业服务总线英文Enterprise Service Bus,简称ESB.其相关源代码也托管在GitHub上,可以在https://github.com/mu

微信文件传输助手文件夹在哪?一起来找找

微信文件传输助手是微信电脑版与手机微信之间相互传输图片等文件的好工具,但很多童鞋都找不到微信文件传输助手文件夹在哪,就让我们一起找找吧 1.先说说手机微信文件传输助手文件夹在哪吧 文件夹路径为/Tencent/MicroMsg/Download/ 2.电脑版微信文件传输助手文件夹在:/微信安装保存目录/wechat files/微信号/ 也可以点击接收到的图片下载保存到相应位置即可

详解“FTP文件传输服务”安装配置实例

"FTP文件传输服务"安装配置实例 家住海边喜欢浪:zhang789.blog.51cto.com 目录 简介 ftp工作原理 常见的FTP服务 Vsftpd服务器的安装 Vsftpd.conf配置文件详解 配置FTP服务器实例 实例:配置匿名用户 实例:配置本地用户登录 实例:配置虚拟用户登录(MySQL认证) 实例:控制用户登录 实例:设置欢迎信息 分析vsftpd日志管理 FTP服务器配置与管理 简介 FTP 是File Transfer Protocol(文件传输协议)的英文简

linux网络环境下socket套接字编程(UDP文件传输)

今天我们来介绍一下在linux网络环境下使用socket套接字实现两个进程下文件的上传,下载,和退出操作! 在socket套接字编程中,我们当然可以基于TCP的传输协议来进行传输,但是在文件的传输中,如果我们使用TCP传输,会造成传输速度较慢的情况,所以我们在进行文件传输的过程中,最好要使用UDP传输. 在其中,我们需要写两个程序,一个客户端,一个服务端,在一个终端中,先运行服务端,在运行客户端,在服务端和客户端都输入IP地址和端口号,注意服务端和客户端的端口号要相同,然后选择功能,在linux

FTP文件传输协议之vsftpd服务

一.FTP服务概述 FTP(File Transfer Protocol,文件传输协议)是典型的C/S结构的应用层协议,需要由服务端软件.客户端软件共同实现文件传输功能 FTP服务器默认使用TCP协议的20.21端口与客户端实现通信.20端口用于建立数据连接,并传输数据文件:21端口用于建立控制连接,并传输FTP控制命令.FTP数据连接分为主动模式和被动模式 主动模式:服务器主动发起数据连接 被动模式:服务器被动等待数据连接 vsftpd软件 vsftpd是目前在Linux/Unix领域应用十分

运维学习之Linux系统中的文件传输、归档、压缩

不同系统之间的文件传输 1.文件归档 1. 文件归档,就是把多个文件变成一个归档文件 2. tar c ##创建 f ##指定归档文件名称 t ##显示归档文件中的内容 r ##向归档文件中添加文件 --get ##取出单个文件 --delete ##删除单个文件 x ##取出归档文件中的所有内容 -C ##指定解档目录 -z ##gz格式压缩 -j ##bz2格式压缩 -J ##xz格式压缩 2.压缩 gz gzip etc.tar ##压缩成gz格式 gunzip  etc.tar.gz #