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キューでリクエスターを使用することであることがわかりました。次のコードは、キューが空になるまでメッセージを要求し、それらを で返す方法を示しています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 に答える