Я проверил несколько предыдущих обсуждений, но не смог найти ответ.Как использовать выражение Mule в JMS: selector
Я пытаюсь добиться синхронного общения с использованием обратного канала JMS (http://www.whishworks.com/blog/synchronous-communication-using-jms-back-channel). Помимо вещей, упомянутых на этом сайте, мне нужно отфильтровать сообщение из входящей очереди на основе динамического идентификатора.
После мой мул потоки:
<flow name="serverFlow" >
<jms:inbound-endpoint doc:name="REQUEST" queue="REQUEST.QUEUE" connector-ref="jmsConnector">
<jms:selector expression="MULE_CORRELATION_ID='#[sessionVars.myCorrelationId]'"/>
</jms:inbound-endpoint>
<set-payload value="#[payload] + Hello World from Receiver" doc:name="Set Payload" />
<jms:outbound-endpoint doc:name="REPLY" queue="REPLY.QUEUE" connector-ref="jmsConnector" />
</flow>
<flow name="mainFlow" >
<http:listener config-ref="HTTP_Listener_Configuration" path="/jms" allowedMethods="GET" doc:name="HTTP"/>
<set-session-variable variableName="myCorrelationId" value="#[System.currentTimeMillis().toString()]" doc:name="Set Correlation ID"/>
<set-payload value="New message sent from Mule - mainFlow at #[new Date()]" doc:name="Set Message"/>
<set-property propertyName="MULE_CORRELATION_ID" value="#[sessionVars.myCorrelationId]" doc:name="Property"/>
<request-reply doc:name="Request-Reply">
<jms:outbound-endpoint doc:name="REQUEST" connector-ref="jmsConnector" queue="REQUEST.QUEUE"/>
<jms:inbound-endpoint doc:name="REPLY" connector-ref="jmsConnector" queue="REPLY.QUEUE"/>
</request-reply>
<logger message="Reply to sender: #[message]" level="WARN" doc:name="Logger" />
</flow>
Если я пытаюсь статическое значение, как "< JMS: выражение селектор =" MULE_CORRELATION_ID = "12345 "/ >", это работает. Но если я попробую динамический идентификатор с помощью MEL, он не работает. MEL внутри выражения селектора jms не работает. Сообщение остается в очереди как «Непрочитано». Я использовал журналы, чтобы узнать, что MULE_CORRELATION_ID установлен в mainFlow, и обнаружил, что одно и то же значение установлено в сообщении, которое является UNREAD в очереди. Итак, я думаю, что нет ничего плохого в том, как установлен MULE_CORRELATION_ID. Единственная проблема заключается в том, что MEL не работает в jms: selector.
Не могли бы вы помочь, как заставить MEL работать в селекторе JMS?
спасибо.
Я могу реплицировать проблему с предоставленным XML. Кажется, это ошибка, так как мы можем печатать значения в регистраторах и не работать только в JMS-селекторе (где он работает со статическим значением, как вы сказали). Я попытался с помощью , но не повезло. –
RamakrishnaN