Thanks Guillaume!

I'll look at why it's so cpu intensive to create a connection + session + producer on the broker side

cheers,

Rob
On 3 Dec 2006, at 18:59, Guillaume Nodet wrote:

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

Reply via email to