On Feb 14, 2008, at 3:08 AM, David Sitsky wrote:
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 possible.
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.
Cheers,
David
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
--
Cheers,
David
Nuix Pty Ltd
Suite 79, 89 Jones St, Ultimo NSW 2007, Australia Ph: +61 2 9280
0699
Web: http://www.nuix.com Fax: +61 2 9212
6902
Yes - Topics next!
cheers,
Rob