What Is the Difference Between JMS and ActiveMQ? ActiveMQ is a JMS provider. A JMS provider forms the software framework for facilitating the use of JMS concepts inside an application. A single node of ActiveMQ which allows clients to connect to it and use these messaging concepts is called an “ActiveMQ Broker.”
Starting with 5.13. 0 ActiveMQ has support for automatic wire protocol detection over TCP, SSL, NIO, and NIO SSL. OpenWire, STOMP, AMQP, and MQTT are supported.
Written in Java, ActiveMQ translates messages from sender to receiver. It can connect multiple clients and servers and allows messages to be held in queue, instead of requiring both the client and server to be available simultaneously in order to communicate.
ActiveMQ. Apache ActiveMQ® is the most popular open source, multi-protocol, Java-based message broker. It supports industry standard protocols so users get the benefits of client choices across a broad range of languages and platforms. Connect from clients written in JavaScript, C, C++, Python, .
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:
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)
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
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.
Used in production by many high profile names including large financial organisations and other such as last.fm
Trusted enough to be the core messaging technology in JBoss AS 7. The latest version of the worlds favourite Java application server.
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.
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.
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.
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With