为什么此代码允许某人在消息处理器(如Java组件)中创建入站消息属性
message.setProperty("myProperty", PropertyScope.INBOUND" );
但这不是
<set-property value="100" propertyName="myProperty" />
根据文档,只有消息源应该能够创建入站属性,那么为什么Java组件能够设置入站消息属性?
答案 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。