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

Reply via email to