I have a route setup that looks like this: <route id="requestor"> <from uri="bean:generateRequest"/> <to uri="jms:topic:request_topic"/> <to uri="stream:out"/> <to uri="bean:shutdownRequestor"/> </route>
It's purpose is to run once at startup to get an intial value (in this example I just have sending to out instead of doing anything with the reply) and never run again. The shutdownRequestor bean has a handler that looks like this: public void process() { List<RouteDefinition> routes = camelContext.getRouteDefinitions(); for(RouteDefinition tRoute: routes) { if (tRoute.getId().equals(routeToShutdown)) { try { camelContext.stopRoute(tRoute); } catch (Exception e) {} } } } routeToShutdown and camelContext are injected prior to it running. This worked fine in 2.4.0. In 2.5.0, I send the request and receive the reply as expected, but when calling the shutdownRequestor bean the callback.done(false) call in ReplyManagerSupport.processReply hangs until the timeout is hit on the correlation map. Once the timeout is hit onTimeout in the reply handler gets called and it goes back to processReply and removes the id from the correlation map. Then as expected camel tries to redeliver the exchange and it spins complaining the correlation id isn't in the correlation map. If I remove the shutdownRequestor bean from the route then as expected it happily continues requesting/receiving responses forever. Perhaps the whole way I was going about implementing a "run once" route is wrong to begin with. Is there a suitable way to do this that will work with the new 2.5.0 async request/reply? -- View this message in context: http://camel.465427.n5.nabble.com/issue-stopping-a-jms-request-reply-route-after-upgrading-to-2-5-0-tp3300620p3300620.html Sent from the Camel - Users mailing list archive at Nabble.com.