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里面.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM