[ https://issues.apache.org/jira/browse/CAMEL-5464?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13445765#comment-13445765 ]
Willem Jiang commented on CAMEL-5464: ------------------------------------- Applied patch with thanks to James. > 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.8.6, 2.9.2, 2.10.0 > Reporter: Raul Kripalani > Assignee: Willem Jiang > Attachments: CAMEL-5464.patch > > > 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&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. > *EDIT:* Just wrapping the single endpoint in <pipeline /> doesn't function as > a workaround. -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira