Mule IDE:MuleStudio
2016年10月18日创建
1 目标:方便Mule组件使用,程序开发。
2原理:定制Eclipse,增加对MULE_HOME的自动扫描,增加MULE相关组件、工程等的操作。
3方法:基本组件
连接器Connector:用于收发消息,添加内容。
4方法:包文件目录
Java文件:Src/main/java
测试文件:Src/test/java
配置文件:src/main/resources,src/test/resources
流程配置文件:flows/*.mflow
5方法:流程管理
5.1 流程编辑:可视化编辑MessageFlow或XML编辑Configuration XML。可以设置全局组件,在Global Elements中编辑。
5.2 流程面板:流程的各种组件
Mule交换消息的外部产生/接受端:端点Endpoints。
第三方通讯组件:Components
格式转换:Transformers
范围控制:Scope,控制Flow的范围、流程
流程控制:控制Flow内部消息流程。
6方法:端点Endpoints:消息的产生/接受端
6.1 文件端点File:由文件系统产生/接受消息。
入口文件Inbound:配置文件的扫描规则,包括路径Path,处理前规则MoveToPattern,MoveToDirectory,扫描规则PollingFrequency,FileAge,文件扫描规则RegexFilter,文件名排序规则Comparator。
出口文件Outbound,配置文件的输出路径Path,常用规则如下。
6.2 网络端点HTTP:由Internet网络产生/接受消息。
入口HTTP:设置请求的HTTP地址,端口,路径等。
出口HTTP:设置最终的HTTP地址,端口,路径等。
6.3 示例:文件格式转换,读取输入文件,转换格式,写入输出文件夹。
参考:http://blog.csdn.net/huyouheng/article/details/7405472
6.3.1 设置流程:设置流程各组件。
6.3.2 配置输入文件,结果文件,错误输出文件:相应文件夹位置。
6.3.3 配置条件选择,如果包含error.txt,则输出到错误文件夹,否则输出到结果文件夹。
错误数据表达式:#[message.inboundProperties.originalFilename=="error.txt"]
6.3.4 转换格式:配置格式转换器,添加指定字符串。
6.3.5 运行:在输入文件夹中添加文件,如果文件夹为error.txt则错误文件夹中出现结果文件,否则出现在结果文件夹中。文件中追加字符串。
//error.txt
this iserror.2016-8-1 16:33:20abc
//test.txt
11123
dddabc
6.4 示例:HTTP请求转发,入口设置为http://localhost:8081/gis,出口HTTP为www.baidu.com。
参考:http://www.cnblogs.com/leipei2352/archive/2012/08/17/2644909.html
6.4.1 设置流程:设置流程各组件。
6.4.2 设置Java组件,配置组件对应的格式转换类。
// com.lee.MyTransformer
package com.lee;
importorg.mule.api.MuleMessage;
importorg.mule.api.transformer.TransformerException;
importorg.mule.transformer.AbstractMessageTransformer;
public classMyTransformer extends AbstractMessageTransformer {
@Override
public Object transformMessage(MuleMessagemessage, String outputEncoding)
throws TransformerException {
// TODO Auto-generated method stub
String content=null;
try {
content = message.getPayloadAsString();
logger.info("orignal content:"+content);
} catch (Exception e) {
logger.error(e.getMessage());
}
return content;
}
}
6.4.3 设置入口HTTP:host=localhost,port=8081,path=gis,URL=http://localhost:8081/gis
6.4.4 设置出口HTTP:host=www.baidu.com,port=80,path为空,URL=http://www.baidu.com
6.4.5 运行,输入http://localhost:8081/gis则跳转到百度。
7方法:组件Components,用于Mule与各种第三方软件通讯
7.1 日志Logger
7.1.1 目标:打印想要信息的日志。
进行操作之前可以进行日志打印Message,然后根据Message的内容进行MEL消息提取。
7.1.2 原理:通过MEL表达式读取消息内容,打印。
7.1.3 流程:使用MEL配置信息体Message,设置日志级别Level,设置日志分类Category。
Level=Info,Category=Mycat,消息体Message
may=#[message.inboundProperties['may']],
method=#[message.inboundProperties['http.method']]
请求http://localhost:8081/mel?may=xx ,结果:
INFO 2016-08-0817:01:23,785 [[test1].connector.http.mule.default.receiver.02] MyCat: may=xx, method=GET
7.2 与Java通讯:Java组件
7.2.1 目标:与Java通讯
7.2.2 原理:Java获取消息,进行格式转换。
7.2.3 流程:创建格式转换类,配置Java组件
创建格式转换类,需要扩展AbstractMessageTransformer
// com.lee.MyTransformer
package com.lee;
importorg.mule.api.MuleMessage;
importorg.mule.api.transformer.TransformerException;
importorg.mule.transformer.AbstractMessageTransformer;
public classMyTransformer extends AbstractMessageTransformer {
@Override
public Object transformMessage(MuleMessagemessage, String outputEncoding)
throws TransformerException {
// TODO Auto-generated method stub
String content=null;
try {
content = message.getPayloadAsString();
logger.info("orignal content:"+content);
} catch (Exception e) {
logger.error(e.getMessage());
}
return content;
}
}
添加Java组件,配置组件对应的格式转换类。
//结果
INFO 2016-08-04 10:22:56,695[[httptest].connector.http.mule.default.receiver.03] com.lee.MyTransformer:orignal content:/gis
7.3 命令行回现Echo:console中显示信息。
//结果
INFO 2016-08-04 10:25:50,473[[httptest].connector.http.mule.default.receiver.02] com.lee.MyTransformer:orignal content:/gis
INFO 2016-08-04 10:25:50,474[[httptest].connector.http.mule.default.receiver.02]org.mule.component.simple.LogComponent:
********************************************************************************
* Message receivedin service: HttpTestFlow1. Content is: '/gis' *
8方法:格式转换器Transformer
8.1 添加字符串AppendString:将指定字符串添加到消息尾部。
//结果
INFO 2016-08-04 10:52:11,504 [[httptest].connector.http.mule.default.receiver.02]com.lee.MyTransformer: orignal content:/gis
INFO 2016-08-04 10:52:11,506[[httptest].connector.http.mule.default.receiver.02]org.mule.component.simple.LogComponent:
********************************************************************************
* Message receivedin service: HttpTestFlow1. Content is: '/gisxxx122' *
********************************************************************************
8.2 设置Payload,payload表示消息体。
INFO 2016-08-04 15:35:42,400[[httptest].connector.http.mule.default.receiver.02] com.lee.MyTransformer:orignal content:/gis
INFO 2016-08-04 15:35:42,401[[httptest].connector.http.mule.default.receiver.02]org.mule.component.simple.LogComponent:
********************************************************************************
* Message received in service: HttpTestFlow1. Content is:''xxxx'' *
********************************************************************************
9方法:过滤器Filter,消息过滤
9.1 正则表达式Regex:按照正则表达式过滤。
9.2 类型过滤器Payload:过滤指定类型。
流程控制器:FlowControl
条件控制器Choice:if…then…else…。