0

我想排队:

<jms:inbound-endpoint connector-ref="jmsConnector" queue="queue.dev" >
<jms:selector expression="JMSCorrelationID='353'"/>
</jms:inbound-endpoint>

它有效,但我想在选择器中使用表达式:

<jms:inbound-endpoint connector-ref="jmsConnector" queue="queue.dev" >
<jms:selector expression="JMSCorrelationID='#[header:OUTBOUND:codeReport]'"/>
</jms:inbound-endpoint>

它没有工作。

4

1 回答 1

4

这没有任何意义:您正在尝试在入站端点中使用出站属性。这是行不通的。

codeReport应该从哪里来的价值?如果是属性文件,则使用${codeReport}.

编辑:事实证明,根据 OP 的评论,解决方案是在 JMS 队列上使用请求者,而不是入站端点。以下代码演示了请求消息直到队列为空并在 a 中返回它们java.util.List

<scripting:component>
    <scripting:script engine="groovy"><![CDATA[
        def jmsMessages = []

        for (def muleMessage = muleContext.client.request("jms://out.queue.dev?selector=JMSCorrelationID%3D'"+ message.getInboundProperty('codeReport') +"'", -1L);
             muleMessage != null;) {
          [] << muleMessage.payload
        }

        jmsMessages
    ]]></scripting:script>
</scripting:component>
于 2013-03-13T05:03:45.310 回答