我想得到一个队列:
<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>
这没用。
答案 0 :(得分:4)
这没有意义:您正尝试在入站端点中使用出站属性。这不起作用。
codeReport
应该来自哪里?如果是属性文件,则使用${codeReport}
。
编辑:事实证明,根据OP的评论,解决方案是在JMS队列上使用请求者,而不是入站端点。以下代码演示了请求消息,直到队列为空并将其返回到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>