Mule IDE:MuleStudio
2016年10月18日创建
连接器Connector:用于收发消息,添加内容。
Java文件:Src/main/java
测试文件:Src/test/java
配置文件:src/main/resources,src/test/resources
流程配置文件:flows/*.mflow
Mule交换消息的外部产生/接受端:端点Endpoints。
第三方通讯组件:Components
格式转换:Transformers
范围控制:Scope,控制Flow的范围、流程
流程控制:控制Flow内部消息流程。
入口文件Inbound:配置文件的扫描规则,包括路径Path,处理前规则MoveToPattern,MoveToDirectory,扫描规则PollingFrequency,FileAge,文件扫描规则RegexFilter,文件名排序规则Comparator。
出口文件Outbound,配置文件的输出路径Path,常用规则如下。
入口HTTP:设置请求的HTTP地址,端口,路径等。
出口HTTP:设置最终的HTTP地址,端口,路径等。
参考:http://blog.csdn.net/huyouheng/article/details/7405472
错误数据表达式:#[message.inboundProperties.originalFilename=="error.txt"]
//error.txt
this iserror.2016-8-1 16:33:20abc
//test.txt
11123
dddabc
参考:http://www.cnblogs.com/leipei2352/archive/2012/08/17/2644909.html
// 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;
}
}
进行操作之前可以进行日志打印Message,然后根据Message的内容进行MEL消息提取。
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
创建格式转换类,需要扩展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
//结果
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' *
//结果
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' *
********************************************************************************
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'' *
********************************************************************************
流程控制器:FlowControl
条件控制器Choice:if…then…else…。