做這個例子只是想說明一下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里面.