2013-03-13 55 views
0

我希望得到一個隊列:在騾子的JMS選擇使用表達式3

<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

這沒有意義:您正試圖在入站端點中使用出站屬性。這是行不通的。

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> 
+0

可變'codeReport'是從其餘參數(是一個動態可變的)。 它不能屬性。 'jms:selector'是入站端點的屬性。 'HTTP:// www.mulesoft.org /文檔/顯示/電流/ JMS +運輸+參考#JMSTransportReference-ExampleConfigurations'。 – 2013-03-13 14:27:11

+0

流中的REST入站端點在哪裏? – 2013-03-13 15:10:56

+0

流程有一個'http:inbound-endpoint',並通過'client.send(「http:// localhost:8177/customerUpdate?codeReport = 351」,「」,prop);' – 2013-03-13 15:30:56