[
https://issues.apache.org/activemq/browse/CAMEL-1366?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Claus Ibsen updated CAMEL-1366:
-------------------------------
Fix Version/s: 2.0.0
Assignee: Claus Ibsen
Good idea.
I was planning to look into a few tickets for camel-jms related to Camel 2.0.
Will look into this one as well, so we can support your use case.
> 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.