做这个例子只是想说明一下mule的组件之间传消息时候,最原始进来的消息是被存放在了message的payload里面.
1.打开mule studio 3.3
2.新建一个项目test,主流程明为main.flow
3.切换到flow的创建流程
4.拖入一个http endpoint,默认的成为了inbound endpoint
5.拖入第二个http endpoint,连接到先前那个http endpoint上面,这次默认成了http outbound endpoint
6.在两个http endpoint 之间拖入一个java transformer
这时,流程如下图(左边是http inbound endpoint,中间是一个java类型的transformer,右边是一个http outbound endpoint):
7.在/src/main/java下新建一个package,新建一个java类,集成自AbstractMessageTransformer;
实现代码如下:
1: package com.leipei.test;
2:
3: import org.apache.log4j.Logger;
4: import org.mule.api.MuleMessage;
5: import org.mule.api.transformer.TransformerException;
6: import org.mule.transformer.AbstractMessageTransformer;
7:
8: public class MyTransformer extends AbstractMessageTransformer {
9: private static Logger logger=Logger.getLogger(MyTransformer.class);
10: @Override
11: public Object transformMessage(MuleMessage message, String outputEncoding)
12: throws TransformerException {
13: String content=null;
14: try {
15: content = message.getPayloadAsString();
16: logger.info("orignal content:"+content);
17: } catch (Exception e) {
18: logger.error(e.getMessage());
19: }
20: return content;
21: }
22:
23: }
这段代码表示我们获取到了从inbound http endpoint进来的消息,不做任何处理,直接交给 http outbound endpoint
8.修改http outbound endpoint,使其可以向baidu发送http get请求.如下:
9.打开http inbound endpoint,确认本地可以接受mule消息的http inbound endpoint的监听端口.如下:
这个是默认配置,先不用管.
10.启动这个mule project,可以看到在控制台有输出如下内容:
**********************************************************************
INFO 2012-08-17 23:37:37,666 [[test].config.change.1.thread.1] org.mule.module.launcher.DeploymentService:
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ Started app 'test' +
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
11.在本地浏览器中输入http://localhost:8081 ,结果如下:
这个说明mule已经将本地请求转发了出去.并且我们的请求内容确实是被放在了 message的payload里面.