36

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.
Jarrod Dixon
  • 15,727
  • 9
  • 60
  • 72
mP.
  • 18,002
  • 10
  • 71
  • 105
  • I haven't used HornetQ, but I can say ActiveMQ could be all four. If you are using JBoss, HornetQ might have better integration. ?? – Peter Lawrey Dec 30 '10 at 09:29
  • 2
    I want to use it w/out Jboss AS. Whether one uses or doesnt use JBossAS shouldnt make any difference to its key observable features. – mP. Feb 04 '11 at 10:44
  • If you're looking for someone to say something that will help you decided one way or another. You most certainly can't go wrong with ActiveMQ (minor Spring dep issue aside). I've been using it in anger for over two years in a large investment back deployed around the globe, and I've only ever had one significant problem, and that was fixed by an easy upgrade. – alexr Feb 04 '11 at 17:14
  • We also embed AMQ in our tests suite with little trouble. – alexr Feb 04 '11 at 17:21
  • I think the more useful approach would be for a clear idea of how the two differ. It would also be _nice_ if any one know what target problem each is aimed at? – will Aug 12 '14 at 02:22

5 Answers5

48

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.

Community
  • 1
  • 1
35

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.

Rohit Gaikwad
  • 3,677
  • 3
  • 17
  • 40
Clebert Suconic
  • 5,353
  • 2
  • 22
  • 35
  • Thanks Clebert for the answer and for your hard work on HQ! I forgot about my question but your notes are right. Themore one gets into HQ the more one appreciates how kool it is. – mP. Jun 06 '11 at 04:53
  • 1
    I've tried both HornetQ and ActiveMQ as a JMS broker for our application which generates very high load. HornetQ wins in performance and reliability. Unfortunately both projects has lacks in documentation. For example, setting cluster of HornetQ machines was a nightmare for me :( – omnomnom Aug 04 '11 at 19:37
9

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.

alexr
  • 397
  • 2
  • 7
  • 11
    One thing i disliked when looking at ActiveMQ is its dependency on Spring ( correct me if im wrong). Suck in Spring and before you know it you have lots of dependencies. HornetQ only requires netty and slf4j. I cant comment about its more exciting features but analysing dependencies is always a good start imho - where less is better. – mP. Jan 15 '11 at 07:19
  • I agree. I feel it is much better when extras can be orthogonal and optional to a tool. Not always possible, however low-level tools like DB-s, MQ-s, TM-s and the like need not be tightly coupled. – will Aug 12 '14 at 02:24
4

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.

wave9x
  • 41
  • 1
  • 5
    Regarding your point 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.") I don't think that's the case. If it was, it isn't any longer. I'm currently the lead on HornetQ, and We have done a few refactoring on HornetQ 2.2.2 and 2.2.5, and we are doing a few extra great improvements on 2.3.0, and we would love any feedback – Clebert Suconic Jun 28 '11 at 17:31
  • Did you use AMQ embedded or remote broker? – raffian May 30 '14 at 16:47
2

Apache ActiveMQ Artemis is the way to go

The HornetQ codebase was donated to the Apache ActiveMQ project, and the HornetQ community joined that project to enhance the donated codebase and create a next-generation messaging broker. The result is Apache ActiveMQ Artemis.

VHS
  • 9,534
  • 3
  • 19
  • 43