On Tue, Mar 13, 2012 at 9:13 AM, ShlomiJ <shlomij...@gmail.com> wrote: > OK, I'm a bit more knowledgeable now... > > The first issue is that I thought I created a pool of 1 thread. > > ShlomiJ wrote >> ThreadPoolBuilder tpBuilder = new ThreadPoolBuilder(this.context); >> ExecutorService wiretapThreadpool = >> tpBuilder.poolSize(*1*).maxPoolSize(*1*).maxQueueSize(*1*).build("WireTap"); >> registry.put(WIRETAP_THREADPOOL, wiretapThreadpool); > But I did not. The pool created was actually of 10 threads. > So once 10 messages passed in the route, all 10 threads have been created > and reused. >
There was an issue in Camel 2.9.1 or older. Can you try with trunk. It ought to use the thread pool as given. > Another issue is the number of calls to wireTap and the way the pool is > used. > > ShlomiJ wrote >> from("quartz://myScheduler?cron=0+*+*+*+*+?") >> .process(new MyMessageSetterProcessor()) >> .wireTap("seda:wireTapQueue").onPrepare(new >> MyCloneProcessor()).*executorServiceRef*(WIRETAP_THREADPOOL) >> .log("${body}") > I now understand that each route has its own pool. So I have (10 * > #schedules) threads of wiretap. > > *But the real issue is that the wiretap threads (maybe others also?) are not > removed when the route is removed.* > I remove a route with CamelContext.getRoute(String) -> > CamelContext.stopRoute(String) -> CamelContext.removeRoute(String). > The last method returns true, but the wiretap threads are still alive. > When you provide an existing thread pool to any Camel EIPs, such as the WireTap, then YOU are in control of the lifecycle of the thread pool. So you have to shutdown this thread pool yourself, when its no longer in-use. Camel does not know whether it would be safe to shutdown a shared thread pool it was given. Only if Camel itself creates the thread pool, then it handles the lifecycle, and will shutdown the thread pool itself, but that happens normally only when Camel is shutdown itself. We could possible improve this to detect in the EIPs whether the thread pool can safely be shutdown when the route is removed or not. I will log a JIRA about this. > I'm using Camel 2.9.0. > thanks > SJ > > -- > View this message in context: > http://camel.465427.n5.nabble.com/WireTap-threads-number-keeps-on-growing-tp5557827p5560267.html > Sent from the Camel - Users mailing list archive at Nabble.com. -- Claus Ibsen ----------------- FuseSource Email: cib...@fusesource.com Web: http://fusesource.com Twitter: davsclaus, fusenews Blog: http://davsclaus.blogspot.com/ Author of Camel in Action: http://www.manning.com/ibsen/