Which embedded messaging system -> ActiveMQ or HornetQ

easier to manage

hornetQ has a clear API for management and it's very easy to use.

has less gotchas or magic stuff one needs to know and avoid

hornetQ was made for the embedded case. It is very, very easy to integrate it in your code. As a matter of fact you can do it with less than 10 lines of code.

has less overall dependencies

Everything on HornetQ is modular. The only required dependency on HornetQ is Netty which is the network provider.

is simple to work with.

HornetQ is very simple to use. Clear API, and mainly, the documentation is very, very complete.

You don't need to buy any books to use HornetQ. All the docs are right there for free at the hornetq's website.


Firstly, I'm biased. I'm the founder of the HornetQ project, although I don't work on it any more.

Why HornetQ over ActiveMQ? Here are a few good reasons:

  1. HornetQ is significantly faster than ActiveMQ. http://community.jboss.org/wiki/HornetQPerformance

    In fact, HornetQ is the #1 fastest enterprise messaging system on the market. Or at least, it was, when we tested it against the market last year. (We tested it against the top 11 or so JMS implementations out there)

  2. Features. HornetQ has a full "enterprise" feature set, that you'd expect to see. Feature list is here http://community.jboss.org/wiki/HornetQFeatures

    You'll find HornetQ has equivalents to most of the features you find in ActiveMQ, and others that you won't find in ActiveMQ

  3. Clustering has recently been overhauled, so it is rock solid. If you have any gripes with the clustering, please use the forums. The HornetQ team will be happy to respond to any perceived issues.

  4. Used in production by many high profile names including large financial organisations and other such as last.fm

  5. Trusted enough to be the core messaging technology in JBoss AS 7. The latest version of the worlds favourite Java application server.

  6. Protocol agnostic architecture. HornetQ, unlike ActiveMQ was not built around JMS. In HornetQ the core server is protocol/API agnostic - it's a generic messaging server. Various protocols/APIs like STOMP/JMS/REST/Websockets etc are added as thin adaptors to the generic core. This makes it much more flexible.