Jms 基于流量变量值的Mule路由选择
我有一个Mule子流,可能有两个出站JMS队列。当我使用MEL根据标题值进行选择时,我的消息会在一个队列中结束,就好像MEL没有执行一样:Jms 基于流量变量值的Mule路由选择,jms,mule,flow,Jms,Mule,Flow,我有一个Mule子流,可能有两个出站JMS队列。当我使用MEL根据标题值进行选择时,我的消息会在一个队列中结束,就好像MEL没有执行一样: <sub-flow name="enqueueFlow"> <!--logger message="Message inbound #[message.inboundProperties['myheader']]" doc:name="Test Flow logging" level="INFO"/--> <c
<sub-flow name="enqueueFlow">
<!--logger message="Message inbound #[message.inboundProperties['myheader']]" doc:name="Test Flow logging" level="INFO"/-->
<choice doc:name="QueueChoice">
<when expression="#[message.inboundProperties['myheader'] != null and message.inboundProperties['myheader'] == 'urgent']">
<set-variable variableName="queueName" value="${urgentQueueName}" doc:name="queueName"/>
</when>
<otherwise>
<set-variable variableName="queueName" value="${lowPriorityQueueName}" doc:name="queueName"/>
</otherwise>
</choice>
<!--logger message="Deposit message into queue named #[variable:queueName]" doc:name="Test Flow logging" level="INFO"/-->
<jms:outbound-endpoint queue="#[variable:queueName]"
connector-ref="EnqueueJmsConnector">
</jms:outbound-endpoint>
</sub-flow>
在
jms:outbound endpoint
中,使用#[queueName]
而不是#[variable:queueName]
也无需使用choice router来模拟三元表达式,只需使用:
<set-variable variableName="queueName"
value="#[h = message.inboundProperties['myheader']; h == empty || h != 'urgent' ? '${lowPriorityQueueName}' : '${urgentQueueName}']"/>
谢谢。我正在读你的书。顺便问一下,它在Mule 3.4Cool中受支持吗:)是的,MEL从3.3开始就受支持。这行吗?