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.

Reply via email to