[ https://issues.apache.org/activemq/browse/CAMEL-1366?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=49854#action_49854 ]
Claus Ibsen commented on CAMEL-1366: ------------------------------------ What if the JMSMessage have a replyTo desintation set? Then the original caller expects a response. Then we can not just disregard this. Could you dig into the code and check how this is handled. > EndpointMessageListener should respect ExchangePattern > ------------------------------------------------------ > > Key: CAMEL-1366 > URL: https://issues.apache.org/activemq/browse/CAMEL-1366 > Project: Apache Camel > Issue Type: Bug > Components: camel-jms > Affects Versions: 1.6.0 > Environment: ActiveMQ/Camel > Reporter: Michael Chen > > In all current releases, > org.apache.camel.component.jms.EndpointMessageListener.onMessage() has the > following logic (line 90 in 1.6.0 code): > {code} > // send the reply > if (rce == null && body != null && !disableReplyTo) { > sendReply(replyDestination, message, exchange, body); > } > {code} > This logic should also respect ExchangePattern of the exchange, so I propose > a change to: > {code} > // send the reply > if (rce == null && body != null && exchange.isOutCapable()) { > sendReply(replyDestination, message, exchange, body); > } > {code} > This change allows a processing pattern where the route may change the > ExchangePattern using methods like RouteBuilder.inOnly() to switch the MEP at > will so that the reply is send at a later time (true asynchronous exchange). > This processing pattern is particularly useful for integrating long running > services. For example, > {code} > // Java DSL > from("activemq:my_queue?exchangePattern=InOnly").to("predict_weather://?reply_later=true"); > // or > from("activemq:my_queue2").inOnly().to("predict_weather://?reply_later=true"); > {code} > The flaw of the current logic makes it impossible to do true asynchronous > exchange, because 1) it does not respect the ExchangePattern; 2) if property > "disableReplyTo" is used, the "org.apache.camel.jms.replyDestination" > property will not be set (see method createExchange in the same file), thus > downstream cannot find the reply destination. > The proposed change can also deprecate the disableReplyTo property and put > the MEP concept into good use. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.