Question

I would appreciate some general pointers and opinions regarding which of the two messaging systems is

  • easier to manage
  • has less gotchas or magic stuff one needs to know and avoid
  • has less overal dependencies
  • is simple to work with.
Was it helpful?

Solution

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.

OTHER TIPS

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.

I use ActiveMq quite heavily in my day job, and rate it very highly for most of the points you raised. I especially rely in the JMX admin console, it's top class.

I have also been keeping a close eye on HornetQ, and may one day add support for that too. From what I can see HornetQ is a bit lighter weight, and has some really nice NIO optimisations, which should make it fly. But lacks some of the enterprise integration features offered by ActiveMQ, and possibly some of the admin features. However, from what I can see the HornetQ team is working hard to fill in the gaps.

I don't think you could do wrong with either choice in my opinion. Try them both out and see which feels better.

I did an extensive evaluation of both before deciding on ActiveMQ. It is proven and stable, something that you want in a messaging system. I have used ActiveMQ on two large scale systems with great success. There was some hype around HornetQ a while back when they claimed to be faster than ActiveMQ so I took a look. HornetQ has some serious flaws with it's clustering which can result in messages being lost and servers trying to indefinitely connect to a failed node. The lead developer on HornetQ refuses to recognize flaws in HornetQ and gets quite defensive on the user forums, something that should make you very wary of the product.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top