【问题标题】:Mule Routing Choice based on Flow Variable Value基于流量变量值的 Mule 路由选择
【发布时间】:2014-04-21 01:26:47
【问题描述】:

我有一个 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 mule flow


    【解决方案1】:

    jms:outbound-endpoint 中,使用#[queueName] 而不是#[variable:queueName]

    也不需要使用选择路由器来模拟三元表达式,只需使用:

    <set-variable variableName="queueName"
        value="#[h = message.inboundProperties['myheader']; h == empty || h != 'urgent' ? '${lowPriorityQueueName}' : '${urgentQueueName}']"/>
    

    【讨论】:

    • 谢谢。我实际上正在读你的书。顺便问一下,Mule 3.4 支持吗
    • 酷 :) 是的,从 3.3 开始支持 MEL。这行得通吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-29
    • 1970-01-01
    • 2023-03-16
    • 1970-01-01
    相关资源
    最近更新 更多