You can use the addService api on CamelContext - see its javadoc On Tue, Oct 20, 2015 at 1:55 PM, Shylendran C <shylendra...@gmail.com> wrote: > Thanks for your reply. > So, just want to confirm - no need to put the start() and stop() for each > thread, is that correct? > And, our application will be running for ever (untill we manually kill the > process), so I am not sure where to put the stop() method. Any suggestions? > > Thanks again, > Shylendran.C > > On Tue, Oct 20, 2015 at 1:06 AM, Claus Ibsen <claus.ib...@gmail.com> wrote: > >> Dont start / stop it all the time, create it once and reuse it, and >> stop it when you stop your app. >> >> On Tue, Oct 20, 2015 at 6:17 AM, shylendran.c <shylendra...@gmail.com> >> wrote: >> > Hi, >> > I am using camel-code-2.15.2.jar. I have a multi-threaded application >> where >> > I have to send message continuously and I am using >> > org.apache.camel.ProducerTemplate. But since it is a multi-threaded, it >> is >> > breaking and getting the below exceptions. So, I've tried with 'static >> > synchronized' where everything is working, but we can't go with 'static >> > synchronized'. So looking for a solution. >> > It is clear that the exception is happening when we have >> > ProducerTemplate.start() and stop() when multi-threads are invoking >> this. We >> > have created only one instance of ProducerTemplate. >> > >> > Is there a way which I can check whether the producer template is already >> > 'open' or 'stop'. I see few protected variables, and while debugging I >> see >> > exactly what I am looking. >> > Please let me know your opinion on this. >> > >> > class RMThread implements Runnable { >> > >> > ....... >> > ......... >> > public void run() { >> > if (producerTemp != null) { >> > >> > producerTemp.start(); >> > producerTemp.sendBodyAndHeaders("zzzz", "", map); >> > producerTemp.stop(); >> > ..... >> > ...... >> > } >> > } >> > >> > public class MainClass { >> > .... >> > ProducerTemplate producerTemplate = null; >> > producerTemplate = configureRoutes.getContext().createProducerTemplate(); >> > >> > ServerSocket ss = new ServerSocket(111 >> > while (true) { >> > new Thread(new RMThread(ss.accept(), log, producerTemplate, >> > producerTemplate_sendTransferMetrics)).start(); >> > .... >> > } >> > >> > >> > Exceptions:: >> > org.apache.camel.CamelExecutionException: Exception occurred during >> > execution on the exchange: Exchange[Message: ] >> > at >> > >> org.apache.camel.util.ObjectHelper.wrapCamelExecutionException(ObjectHelper.java:1635) >> > .... >> > Caused by: java.lang.IllegalStateException: Pool not open >> > at >> > >> org.apache.commons.pool.BaseObjectPool.assertOpen(BaseObjectPool.java:140) >> > ... >> > .... >> > >> > Thanks, >> > Shylendran.C >> > >> > >> > >> > >> > -- >> > View this message in context: >> http://camel.465427.n5.nabble.com/ProducerTemplate-creates-too-much-threads-tp5751299p5772885.html >> > Sent from the Camel - Users mailing list archive at Nabble.com. >> >> >> >> -- >> Claus Ibsen >> ----------------- >> http://davsclaus.com @davsclaus >> Camel in Action 2nd edition: >> https://www.manning.com/books/camel-in-action-second-edition >>
-- Claus Ibsen ----------------- http://davsclaus.com @davsclaus Camel in Action 2nd edition: https://www.manning.com/books/camel-in-action-second-edition