activemq-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Guillaume Nodet" <gno...@gmail.com>
Subject Connection pooling
Date Sun, 03 Dec 2006 18:59:33 GMT
Over the past days, I worked on improving the connection pooling in
ActiveMQ, mainly for outbound.  I found that:
  * the o.a.a.pool package has a limited throughput when using persistence
     messaging, because all threads reuse a single connection, but the broker
     will handle the messages sequentially, so the throughput of using a single
     transaction in multiple threads is the same as using a single thread.
 * the activemq resource adapter used for outbound is really slow (using
    jencks), because the connection is completely reset after each use.  The
     connection infos need to be sent each time + creation of an
advisory consumer
     on the connection, + createion of the session + creation of a
producer.  These
    operations are very cpu intensive on the broker side (no real idea
why).  I think
    this should be improved by pooling sessions / producers.

For my current needs, I have enhanced the o.a.a.pool package to support
enlisting the current session in an active xa transaction, and by allowing
several connections to be used to raise the global throughput.
I have also added in jencks a derived pooled connection factory which
is compatible with jencks jca inbound support (the main problem is that
the XAResource#isSameRM need to work and recognize that the inbound
connection and outbound connection use the same RM).

My last thought is that i wonder if the org.apache.activemq.pool package
should be in its own module because it has its own set of dependencies
in addition to the standard jms client (commons-pool mainly) which can
lead to problems with classloaders.

-- 
Cheers,
Guillaume Nodet

Mime
View raw message