I already tried every topic here, with no significant effect. I'm already using KahaDB for peristence (even placing it's data to tmpfs). I can't use async send/receive, as I need reliable transport. I'm using transactions (this is a requirement).
What about multiple consumers? Should they use one or many different connection factories or sessions to consume faster? On Wed, Dec 15, 2010 at 5:49 PM, Dejan Bosanac <de...@nighttale.net> wrote: > Hi, > > you can find some additional tips for performance tuning here: > > http://activemq.apache.org/performance-tuning.html > > and > > > http://fusesource.com/wiki/display/ProdInfo/FUSE%20Message%20Broker%20Performance%20Tuning%20Guide > > Cheers > -- > Dejan Bosanac > ----------------- > FuseSource - The experts in open source integration and messaging. > Email: dej...@fusesource.com > Web: http://fusesource.com > Twitter: http://twitter.com/dejanb > ActiveMQ in Action - http://www.manning.com/snyder/ > Blog - http://www.nighttale.net > > > > On Wed, Dec 15, 2010 at 3:41 PM, Stanislaw Kogut <sko...@sistyma.net> > wrote: > > Hello. > > > > I'm currently evaluating ActiveMQ as a message broker for our service. We > > need scalable, transacted, low-latency message broker, but ActiveMQ shows > > not very good results to me. > > > > Config: ActiveMQ 5.4.2 with nio:// transport, KahaDB persistence adapter > and > > data directory on tmpfs filesystem (to get rid of disk performance > impact). > > > > In details: With persistence enabled and commiting every message sent to > > broker we have about 2k messages/s on producer side, and similar > consuming > > speed with one producing thread. > > It also has good latency - about 5 milliseconds to deliver message, but > 2k > > msg/s can be slow in future, so I'm trying to commit messages after some > > count of them sent, for example after every 100 messages. This shows > better > > throughput, about 10k messages/s, but now consumer side looks slow. Also, > > latency is increased because time to fill this "100 messages" cap. > > > > Also, consumer side is not able to consume all these messages on this > rate > > and queue length grows. > > > > It is very possible also, I will have more than one producer for one > queue > > because of application design. I also test this scenario and producers > are > > relatively fast, but consumer become very slow, receiving 1-2 messages > per > > second. With enabled producer flow-control broker can stop producers and > > serve consumer better, but it has very bad impact on latency as producer > > should wait for broker to acknowledge messages, preventing new data from > > being sent. > > > > > > Is there is a way to consume messages from queue faster? I'm tried both > > implementing MessageListener and MessageConsumer.receive(), but both show > > same result. Usage of vmCursor or prefetching in broker makes no changes > to > > situation. > > > > Also, is there any topology for distirbuting one ActiveMQ queue to more > than > > one machine without big latency impact to increase it's throughput? > > > > -- > > Regards, > > Stanislaw Kogut > > Sistyma LLC > > > -- Regards, Stanislaw Kogut Sistyma LLC