Raul Kripalani created CAMEL-5464:
-------------------------------------

             Summary: camel-jms consumer doesn't send back a reply in all cases
                 Key: CAMEL-5464
                 URL: https://issues.apache.org/jira/browse/CAMEL-5464
             Project: Camel
          Issue Type: Bug
          Components: camel-activemq, camel-jms
    Affects Versions: 2.10.0, 2.9.2, 2.8.6
            Reporter: Raul Kripalani
             Fix For: 2.10.1


In a very simple route consuming from a Camel JMS endpoint receiving InOut 
exchanges (i.e. JMSReplyTo header present), the endpoint will not send back 
replies.

This happens because Camel JMS only returns a reply if the OUT message is set. 
But if the route looks like: consumer => processor, and Camel doesn't find the 
need to "weave in" an implicit Pipeline processor, no one will implicitly take 
care of mapping the IN message to an OUT message (unless the user knows about 
these internal aspects - but we shouldn't expect them too).

As a result, these routes DON'T WORK...

{code}
<route>
   <from uri="timer:foo?fixedRate=true&amp;period=10000" />
   <setBody><constant>Hello Raul</constant></setBody>
   <to uri="log:SendingRequest?showAll=true" />
   <inOut uri="activemq:queue:test1?requestTimeout=1000" />
   <to uri="log:ReceivedReply?showAll=true" />
</route>
        
<route>
   <from uri="activemq:queue:test1" />
   <to uri="log:ReceivedRequest?showAll=true" />
</route>
{code}

... but just by adding an additional log endpoint to the second route (or any 
other thing, for that matter), it starts to work because Camel weaves in the 
Pipeline processor.

Other workarounds that work:
* explicitly wrapping the log endpoint in a <pipeline> DSL
* <setBody><simple>${in.body}</simple></setBody>

Or simply introducing anything that will force Camel to insert a Pipeline 
processor.

IMHO, there are two solutions to avoid this issue:
# Always weave in a Pipeline processor (adds overhead in simple routes and may 
cause regressions)
# Adapt EndpointMessageListener to pick the IN message when the exchange is out 
capable and expectation of a reply exists

I'm happy to work on a patch for Camel 2.10.1.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to