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.