Mule http端点+transformer的一个小例子

做这个例子只是想说明一下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):

image

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请求.如下:

image

9.打开http inbound endpoint,确认本地可以接受mule消息的http inbound endpoint的监听端口.如下:

image

这个是默认配置,先不用管.

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 ,结果如下:

image

这个说明mule已经将本地请求转发了出去.并且我们的请求内容确实是被放在了 message的payload里面.

原文地址:https://www.cnblogs.com/leipei2352/p/2644909.html