camel-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Claus Ibsen (JIRA)" <j...@apache.org>
Subject [jira] Commented: (CAMEL-1366) EndpointMessageListener should respect ExchangePattern
Date Thu, 26 Feb 2009 11:01:59 GMT

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

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

@Michael

That is actually a good idea. The reply can be done later as you say. 
But isnt that supported already with the disableReplyTo option?

{code}
from("activemq:my_queue?disableReplyTo=true").to("predict_weather://?reply_later=true");
{code}




> 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.


Mime
View raw message