Apache ActiveMQ is one of the oldest Open Source messaging products. However for the past couple of years its roadmap has been changed multiple times. If you are starting a new long term project, I would suggest that you consider alternatives. And there are plenty. My favorite one is (yes, you guessed it) – IBM MQ, but if you are not willing to go for commercial product (which by the way has majority market share*), you can consider RabbitMQ, Kafka, ZeroMQ and a handful of others – depending on your requirements.
Why am I so pessimistic about ActiveMQ? There are several reasons:
- Mediocre performance (as documented in my post, or just google for other performance results – ActiveMQ is almost always in the middle or on the bottom of the pack);
- Poor administration and monitoring tools (as described in this post);
- Weak security model (as described in this post);
- Loss and duplication of data under certain failure scenarios (as described in this post);
- Last, not least the likely dead end ahead.
It is this last point that I would like to discuss in this article. Please beware that I am not involved with the project, nor do I have a crystal ball, but I looked at the available corpus of data and formed an opinion about what I personally think is going on with the project. I hope the facts and references I used in this post can help you form your own opinion and make proper selection of your next messaging product.
These days ActiveMQ project is actively influenced by Red Hat. One of the reasons for such interest is that Red Hat sells commercially supported version of ActiveMQ that is called JBoss A-MQ. Therefore it is helpful to understand the history of messaging projects within Red Hat and JBoss to be able to see full picture with ActiveMQ.
Back in 2014, the direction for ActiveMQ was to be rewritten as Apache Apollo project (at the time advertised as the best, most reliable, fastest, coolest messaging ever), however it did not work out. QUOTE from Apache website: “At one point, if you were interested in Version 6, you could take a look at Apollo subproject as it was expected to be the core of the 6.0 broker. However, as of July 2015, Apollo is being unofficially declared dead. There is currently no official decision about the path forward for 6.0, though it’s possible that the Artemis subproject will instead become 6.0 at some point.”
As you can see, the latest direction for the ActiveMQ is to morph into project Artemis, but this decision has not been made yet as you can see on Apache website and for now the development of both ActiveMQ and Artemis continues in parallel. It is worth noting that Artemis code base was Red Hat’s HornetQ donation to Apache, hence I would expect that if you ask Red Hat, their answer would likely be that Artemis is strategic product, but looking at past history, who knows? Indeed, the beta version of JBoss A-MQ v7 is based on Apache Artemis. This marks the 5th major rewrite of the messaging for Red Hat JBoss and in the past no migration path was provided. Will it be available this time? So far ActiveMQ is not compatible with Artemis, but we shall see what happens in the next couple of years. If history is any indication, the migration path is not top priority for Red Hat. If you are starting a new project that needs messaging, you may want to think twice before using ActiveMQ or Artemis, as things may change. Again.
* Note: According to Gartner’s March 2016 report, IBM MQ has 66% market share in the $1.35B messaging market worldwide.