[rules-users] StatefulKnowledgeSession construction executes sequentially (no multithread)
Wolfgang Laun
wolfgang.laun at gmail.com
Tue Oct 11 08:35:45 EDT 2011
Its just a hunch, but try your original code (not the pooling one) but pass
the newStatefulKnowledgeSession to the constructor of the Thread sublass.
-W
2011/10/11 Juan Carlos Fernández <juancarlos.fernandez at safelayer.com>
> Here you have my pooling solution. Testing this source code reaches 100%
> CPU
> usage!! Used apache commons pooling. borrowObject() creates stateful
> session
> and pool it. returnObject() retracts all facts.
>
> Can we extract a conclusion with my tests? I'm going to implement pooling
> solution inside my SOAP app and do performance tests (throughput).
>
> public class KnowledgeSessionThread extends Thread {
>
> int iterations = 500;
> int numberFacts = 1000;
> private ObjectPool pool;
>
> public KnowledgeSessionThread(ObjectPool pool) throws Exception {
> this.pool = pool;
> }
>
> public void run() {
> try {
> for( int i = 0; i < iterations; i++ ) {
> StatefulKnowledgeSession session =
> (StatefulKnowledgeSession)pool.borrowObject();
> for( int j = 0; j < numberFacts; j++ ) {
> Message msg = new Message();
> msg.setMessage("Hello world");
> msg.setStatus(Message.HELLO);
> session.insert(msg);
> }
> session.fireAllRules();
> pool.returnObject(session);
> }
> System.out.println("Thread finished " +
> this.currentThread().getName());
> } catch( Exception e ) {
> e.printStackTrace();
> }
> }
> }
>
> @Override
> public Object makeObject() throws Exception {
> System.out.println(Thread.currentThread().getName() + " -
> makeObject()
> called" );
> return kbase.newStatefulKnowledgeSession();
> }
>
> @Override
> public void destroyObject( Object obj ) {
> StatefulKnowledgeSession session =
> (StatefulKnowledgeSession)obj;
> session.dispose();
>
> }
>
> @Override
> public void passivateObject(Object obj) {
> StatefulKnowledgeSession session =
> (StatefulKnowledgeSession)obj;
> for( FactHandle handle : session.getFactHandles() ) {
> session.retract(handle);
> }
> }
>
> --
> View this message in context:
> http://drools.46999.n3.nabble.com/StatefulKnowledgeSession-construction-executes-sequentially-no-multithread-tp3412107p3412338.html
> Sent from the Drools: User forum mailing list archive at Nabble.com.
> _______________________________________________
> rules-users mailing list
> rules-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20111011/9a69303d/attachment.html
More information about the rules-users
mailing list