activemq-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From David Sitsky <>
Subject Re: Optimising PrefetchSubscription.dispatchPending() ideas
Date Thu, 14 Feb 2008 03:08:52 GMT
Rob and I did some performance enhancements with queues so that a 
Queue.send() call was decoupled from the dispatch processing.  In the 
past, depending on the state of the consumers, a Queue.send() call could 
take a significant amount of time.  We changed it so that a single 
thread was responsible for dispatching messages, which avoided a lot of 
lock contention.  It also meant a Queue.send() returned as quickly as 

I imagine a similar change could be done for Topics, since from what I 
can tell, a Topic.send() call currently does its dispatch processing in 
the same call.


Jim Gomes wrote:
> I am very interested in this set of changes.  I am currently
> load/performance testing ActiveMQ, and am very surprised at the results.
> Anything that can be done to speed this area is a good thing.  I have found
> a dramatic drop in performance when adding even a single consumer,
> especially to a Topic.  The producer to the Topic is slowed down quite a
> bit, which was a surprise to me.  I expected that the
> existence/non-existence or performance of a consumer would have no impact on
> a producer, but that is not the case.  A producer is directly impacted by
> any consumers, especially idle consumers.  An idle Topic consumer can
> actually cause a producer to block.  As far as I have been able to determine
> from browsing the documentation, this is by design.
> I am looking forward to your efforts in this area.
> Best Regards,
> Jim


Nuix Pty Ltd
Suite 79, 89 Jones St, Ultimo NSW 2007, Australia    Ph: +61 2 9280 0699
Web:                            Fax: +61 2 9212 6902

View raw message