Reputation: 60
<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>
Its working but when i try to use the below one its not deploying
<!-- 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]'" />
Upvotes: 1
Views: 422
Reputation: 205
jms:selector expression="putOnQueueTime > ABC "
can use the above expression in jms inbound.
Upvotes: 0
Reputation: 8311
I think here is your answer given :- Using an expression in a JMS Selector in Mule 3
And one more thing, you cannot use #[flowVars.reqId]
for getting the jms:selector
value dynamically since flow variable scope is limited to a flow ... instead use a session variable like #[sessionVars.reqId]
..
and your flow will be modified as follow :-
<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>
You can see here the message is send to the queue using Groovy Script and I have used session variable instead of flow variable
Upvotes: 1