Raul Kripalani created CAMEL-6123: ------------------------------------- Summary: camel-jms: InOut exchange can time out even if response was received Key: CAMEL-6123 URL: https://issues.apache.org/jira/browse/CAMEL-6123 Project: Camel Issue Type: Bug Components: camel-jms Affects Versions: 2.10.3, 2.9.5 Reporter: Raul Kripalani Assignee: Raul Kripalani Priority: Critical Fix For: 2.9.6, 2.10.4, 2.11.0
When performing an InOut JMS exchange with a certain requestTimeout, if the reply message is received in time, but the following formula stands true: {{T0 + T1 >= T!}}, where: T0 = JMS response time T1 = remaining route processing time following the reply T! = requestTimeout Then camel-jms will throw an {{ExchangeTimedOutException}} regardless of the fact that the reply was truly received in time. I'm surprised this bug has gone unnoticed until now, as it's been present since mid-2010. *Example unit test:* {code:java} @Test public void testTimeoutNotTriggered() throws Exception { getMockEndpoint("mock:exception").expectedMessageCount(0); template.requestBody("activemq:test", "<hello />"); assertMockEndpointsSatisfied(); } @Override protected RouteBuilder createRouteBuilder() throws Exception { return new RouteBuilder() { @Override public void configure() throws Exception { onException(ExchangeTimedOutException.class) .handled(true) .to("mock:exception"); from("activemq:test") .to("activemq:inexistent?requestTimeout=500") .delay(constant(600)); } }; } {code} -- 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