[ 
https://issues.apache.org/activemq/browse/CAMEL-1366?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=50068#action_50068
 ] 

Claus Ibsen commented on CAMEL-1366:
------------------------------------

trunk: Committed revision 748476.

> 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
>            Assignee: Claus Ibsen
>             Fix For: 2.0.0
>
>
> 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.

Reply via email to