从Java组件访问MuleMessage和流变量

时间:2014-04-03 14:56:40

标签: java mule

我有一个接收有效负载(JsonData)的Java组件,如下所示:

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

这工作正常,但我还需要访问方法中的流变量。我明白,为此,我需要运行myMessage.getInvocationProperty(" my-variable-name"); 但是,由于我只传递了有效负载,因此我无法访问MuleMessage。如何更改方法以便我可以访问我的消息/属性?

我试过了:

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

但已被弃用。

另外,我已经在这个问题上阅读了各种答案,但从未找到完整答案。

谢谢,

2 个答案:

答案 0 :(得分:2)

通过myMethod消息处理器将流变量作为第二个参数传递给invoke

因此,假设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']]" />

答案 1 :(得分:0)

使用message.getInvocationProperty方法。

设置变量:

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

从调用范围中检索变量:

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