2014-04-03 11 views
0

我具有接收的有效載荷(JsonData)一個Java組件,像這樣:訪問MuleMessage和從Java組件流量變量

public String myMethod(JsonData payload) throws IOException { 
    // do things with payload. 
} 

這是工作正常,但我還需要中訪問一個流量變量方法。我明白,要做到這一點,我需要運行myMessage.getInvocationProperty(「my-variable-name」); 但是,由於我只通過有效載荷,因此我無法訪問MuleMessage。我怎樣才能改變我的方法,使我可以訪問我的消息/財產?

我想:

org.mule.RequestContext.getEvent().getMessage() 

,但它已被棄用。

此外,我已閱讀關於此問題的各種答案,但從未找到完整的答案。

謝謝,

回答

2

傳遞流量變量經由invoke消息處理器的第二參數myMethod

因此,假設的myMethod新的簽名是:

public String myMethod(JsonData payload, String myVariable) throws IOException { 
    // do things with payload. 
} 

你會怎麼做:

<invoke object-ref="myComponent" 
     method="myMethod" 
     methodArguments="#[message.payload],#[flowVars['my-variable-name']]" /> 
+0

感謝您的三分球,但這不是一個完整的解決方案,但。我對Java或Mule很少有經驗,所以對於'通過調用'消息處理器的含義我仍然有點困惑。具體是什麼樣子? –

+0

當然,我已經延長了我的答案。 –

+0

太棒了!謝謝! –

0

使用message.getInvocationProperty方法。

設置變量:

<set-variable variableName="lastname" value="#[payload.lastname]" /> 

從調用範圍檢索變量:

String lastname = message.getInvocationProperty("lastname");