入境物业骡子创造

时间:2014-02-05 17:58:52

标签: java mule

为什么此代码允许某人在消息处理器(如Java组件)中创建入站消息属性

message.setProperty("myProperty", PropertyScope.INBOUND" );

但这不是

<set-property value="100" propertyName="myProperty" />

根据文档,只有消息源应该能够创建入站属性,那么为什么Java组件能够设置入站消息属性?

1 个答案:

答案 0 :(得分:1)

您是对的 - 这确实违反了入站属性的记录行为。如果您尝试使用表达式组件设置入站属性,请进一步证明:

<expression-component>
  message.inboundProperties['foo'] = 'bar'
</exporession-component>

在运行时将抛出以下错误:

Exception stack is:
1. The inbound message property "foo" cannot be added, updated or removed 
   because inbound message properties are immutable (java.lang.UnsupportedOperationException)
  org.mule.el.context.MessagePropertyMapContext:47 (null)

然而setProperty的Javadoc说:

  

在邮件上设置属性。最终用户应该更喜欢   特定范围的可读性方法。这个更适合   程序化范围操作和骡子内部使用。

所以需要注意的是setProperty是用于内部Mule的,你应该使用setInvocationProperty,setOutboundProperty或setSessionProperty。这很有趣,因为我确定我以前使用过setProperty。