Jms 基于流量变量值的Mule路由选择

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

我有一个Mule子流,可能有两个出站JMS队列。当我使用MEL根据标题值进行选择时,我的消息会在一个队列中结束,就好像MEL没有执行一样:

<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开始就受支持。这行吗?