I think you can use ".setExchangePattern(ExchangePattern.InOut)" instead of the deprecated ".inOut()"
Cheers Stefan On Wed, May 2, 2012 at 2:22 PM, frankie_hr <franjo.zemu...@2e-systems.com> wrote: > Hi All, > > I have an issue with returning an object back to the caller while using the > ProducerTemplate.requestBody() method and ActiveMQ since I upgraded to more > recent versions of Camel (2.9.2) and ActiveMQ (5.5.1). I didn't have such > problems earlier when using Camel 2.5.0 and ActiveMQ 5.4.2, but since I > upgraded, the from("endpoint").inOut() method showed as Deprecated and I > couldn't get this test running ever since I removed the inOut(). Please > advise! > > My route is defined as follows: > > from("activemq:queue:start") > // used to be .inOut() here > .to(BEAN + "handler" + METHOD + "printType") > .to(BEAN + "handler" + METHOD + "doesNothing") > .to(BEAN + "handler" + METHOD + "printType") > .to(ExchangePattern.InOut, "activemq:queue:continue"); > > from("activemq:queue:continue") > // used to be .inOut() here > .to(BEAN + "handler" + METHOD + "printType") > .to(BEAN + "handler" + METHOD + "doesNothing") > .to(BEAN + "handler" + METHOD + "printType"); > > > The definitions of "printType" and "doesNothing" methods are: > > @InOut > public void doesNothing(Object o, Exchange exchange) { > > logger.info("-----> doesNothing"); > } > > @InOut > public void printType(Object o) { > > logger.info("-----> printType"); > > logger.info("Checkpoint: " + o.getClass().getName()); > } > > > The Junit is set up as follows: > > @Test > public void testCamel() { > > // class A is just an empty class, no fields or methods > A a = new A(); > > // defined as a bean via Spring > ProducerTemplate camelTemplate = (ProducerTemplate) > > ApplicationContextProvider.getApplicationContext().getBean("camelTemplate"); > > try { > > Object o = camelTemplate.requestBody("activemq:queue:start", a); > > if (o != null) { > > System.out.println("RETURNED: " + o.getClass().getName()); > } > > } catch (Exception e) { > > System.out.println("CAUGHT EXCEPTION:"); > e.printStackTrace(); > } > } > > Whenever I execute this Junit, I get an exception: > > org.apache.camel.ExchangeTimedOutException: The OUT message was not received > within: 20000 millis due reply message with correlationID: > ID-franjo-laptop-33615-1335960044731-0-2 not received. Exchange[Message: > com.ee.jbube.temporary.A@6366ce5f] > at > org.apache.camel.component.jms.reply.ReplyManagerSupport.processReply(ReplyManagerSupport.java:126) > ... > > > If, for instance, I wasn't using "activemq:queue", but replaced it with > "seda", everything executes correctly and I get the following output: > > Camel thread #1 - seda://start - -----> printType > Camel thread #1 - seda://start - Checkpoint: com.ee.jbube.temporary.A > Camel thread #1 - seda://start - -----> doesNothing > Camel thread #1 - seda://start - -----> printType > Camel thread #1 - seda://start - Checkpoint: com.ee.jbube.temporary.A > Camel thread #2 - seda://continue - -----> printType > Camel thread #2 - seda://continue - Checkpoint: com.ee.jbube.temporary.A > Camel thread #2 - seda://continue - -----> doesNothing > Camel thread #2 - seda://continue - -----> printType > Camel thread #2 - seda://continue - Checkpoint: com.ee.jbube.temporary.A > > RETURNED: com.ee.jbube.temporary.A > > > > Kindest regards, > Franjo > > -- > View this message in context: > http://camel.465427.n5.nabble.com/ExchangePattern-InOut-ActiveMQ-problem-tp5680362.html > Sent from the Camel - Users mailing list archive at Nabble.com.