MuleEvent event.getFlowVariable与event.getMessage()。getInvocationProperty

时间:2016-01-10 07:03:27

标签: mule

MuleEvent event传递给MessageProcessorevent.getFlowVariableevent.getMessage().getInvocationProperty的{​​{1}}之间有什么区别?我测试了它们甚至为异步提供相同的结果(我通过在具有不同变量值的分散 - 聚集中调用它来测试)

1 个答案:

答案 0 :(得分:0)

基本上有任何区别。实际上,当设置消息时,在消息级别命名为invocationProperty的flowVariables将被复制到mule事件中,以便您也可以通过getFlowVariable方法从那里访问它。 这是MuleDefaultEvent.class setMessage方法的摘录,它向您显示值是相同的。

@Override
public void setMessage(MuleMessage message)
{
    this.message = message;
    if (message instanceof DefaultMuleMessage)
    {
        // Don't copy properties from message to event every time we copy event as we did before. Rather
        // only copy invocation properties over if MuleMessage had invocation properties set on it before
        // MuleEvent was created.
        flowVariables.putAll(((DefaultMuleMessage) message).getOrphanFlowVariables());

        ((DefaultMuleMessage) message).setInvocationProperties(flowVariables);
        if (session instanceof DefaultMuleSession)
        {
            ((DefaultMuleMessage) message).setSessionProperties(((DefaultMuleSession) session).getProperties());
        }
    }
}

希望这会有所帮助。 此致