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.

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.

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.

Reply via email to