【问题标题】:jms selector expression in Mule is not workingMule 中的 jms 选择器表达式不起作用
【发布时间】:2015-04-30 17:20:56
【问题描述】:
<flow name="readqueueFlow1" doc:name="readqueueFlow1" >
    <jms:inbound-endpoint queue="MyTestQueue" connector-ref="Active_MQ-Priority" doc:name="JMS">
        <jms:selector expression="JMSCorrelationID=’353’" />
    </jms:inbound-endpoint>
</flow>

它的工作,但是当我尝试使用下面的它没有部署时

<!-- When we don't provide single quote it is failing in deployment -->
<jms:selector expression="JMSCorrelationID='#[flowVars.reqId]'" />

<!-- Payload contains reqId, when we provide it in single quote, it is assuming as a constant -->
<jms:selector expression="JMSCorrelationID='#[payload]'" />

【问题讨论】:

    标签: jms mule mule-studio


    【解决方案1】:

    我认为这是您给出的答案:- Using an expression in a JMS Selector in Mule 3

    还有一件事,您不能使用#[flowVars.reqId] 动态获取jms:selector 值,因为流变量的范围仅限于流...而是使用会话变量,例如#[sessionVars.reqId] ..

    您的流程将被修改如下:-

     <flow name="readqueueFlow1"  >
        <jms:inbound-endpoint queue="StudioOUT" connector-ref="Active_MQ" doc:name="JMS"/>
           <scripting:component>
        <scripting:script engine="groovy"><![CDATA[
            def jmsMessages = []
    
            for (def muleMessage = muleContext.client.request("jms://MyTestQueue?selector=JMSCorrelationID%3D'"+ sessionVars['reqId'] +"'", -1L);
             muleMessage != null;) {
          [] << muleMessage.payload
            }
    
            jmsMessages
        ]]></scripting:script>
    </scripting:component>
      <logger level="INFO" message="#[message.payload]" doc:name="Logger"/>
    </flow> 
    

    您可以在这里看到消息是使用 Groovy 脚本发送到队列的,我使用 session variable 而不是 flow variable

    【讨论】:

      【解决方案2】:

      jms:selector 表达式="putOnQueueTime > ABC"

      可以在jms inbound中使用上面的表达式。

      【讨论】:

        猜你喜欢
        • 2023-03-16
        • 2016-01-11
        • 1970-01-01
        • 2015-09-10
        • 2013-08-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多