Software vendors can say what they want about their products, but most developers want proof, which is why people want to test different products against the competition. Researchers at UT Darmstadt have been testing the performance of enterprise message-oriented middleware servers based on JMS (Java Messaging Service) for several years, and this year the SPECjms2007 benchmark record was broken by JBoss' open source enterprise messaging system, HornetQ.
SPECjms2007 is a peer-reviewed, industry standard benchmark for JMS messaging systems. It measures standard workload and performance metrics for competitive product comparisons. The benchmark provides a framework for in-depth analysis as well. All components that make up the application environment are taken into account, including hardware, JMS server software, JVM software, database software if used for message persistence, and the system network. The benchmark also provides two key scalability metrics: horizontal and vertical topologies.
The benchmark pitted HornetQ 2.0 against Apache ActiveMQ 5.3, which has a reputation for being fast. Each messaging system ran on an IBM x3850 system with the same OS setup. When the dust settled, HornetQ had blown ActiveMQ out of the water. HornetQ not only beat ActiveMQ, but it also broke the record for all SPECjms2007 benchmarks. HornetQ 2.0's scores were up to 307% higher than previously published SPECjms2007 results.
In a recent interview with Tim Fox, the project lead of HornetQ, he told DZone the two main areas that contribute to HornetQ's high-performance. First, there's Netty, which is a low‑level Java NIO library written by the author of Apache MINA. Then there's real "secret weapon" behind HornetQ. Fox explains:
"This system is a very high‑performance journal, which is basically written in 99‑percent Java. But we also have a small layer of native code that's accessed by JNI. And what this does is, when you're running on Linux, it detects that you're running on Linux, and then it automatically enables a bit of native code, which allows us to pass into Linux asynchronous file IO. And basically, what this does is it allows us to get much faster persistence than would be possible in pure Java."
The final version of HornetQ 2.0 was released about one month ago. You can learn more about HornetQ in DZone's podcast interview with the project's lead developer, Tim Fox. JBoss says it has already started working on HornetQ 2.1, which will include another round of performance enhancements.