Middleware: RESTful interfaces ActiveMQ vs RabbitMQ vs Solace Systems

One use-case for Message Oriented Middleware is to provide a RESTful endpoint. This post looks at some options for how to do this for a specific use case:Replace MSMQ within Excel industrialisation..."Central Error Reporting"  with an HTTP call using WinHTTP.

We will be looking at three options
  1. Apache ActiveMQ - open source
  2. RabbitMQ - open source
  3. Solace Systems -vendor proprietary
Replace MSMQ 
Two open source options that may offer this functionality are Apache ActiveMQ and RabbitMQ. A proprietary vendor solution is provided by Solace Systems

The use case here is very simple, to replace the implementation of MSMQ from within Excel Industrialisation with an HTTP call using WinHTTP to access MoM.

First, Apache Active MQ...

Downloading was simple, installation was trivial, instructions to get started are clear.  Within ten minutes I had a running server and was able to get started on coding very quickly.  It's a Java application that uses a wrapper to behave in a Windows Service friendly manner - the Tanuki Software Wrapper.

After some playing around, I managed to find what I believe to be a nasty bug - you cannot sent a payload in a HTTP POST message. So when you want to POST data from a form the server rejects the message.  You can see the Jira I created here.

However, up to the point of failure I was very impressed with Apache ActiveMQ and I will wait to see how the Jira is handled before making a yes/no decision on the product.

Note though that ActiveMQ is on it's way to retirement as Apache has created ActiveMQ Apollo which will (in theory) be version 6 of ActiveMQ.  Apollo is written in Scala and is not feature complete as a like-for-like replacement of ActiveMQ so it was not considered here.

Second, RabbitMQ...

RabbitMQ is an implementation of AMQP.  Again, simple to download and get started, this time there is a wrapper around Erlang. 

Third, Solace Systems...
Solace is a very different proposition when compared to ActiveMQ and RabbitMQ.  It's a vendor proprietary solution that uses a hardware device to offer enterprise grade messaging.  They have also started to offer a RESTful interface see here, here and here and here. There is a great explanation (albeit quite old) of the technology by Kirk Wylie here.

To be continued...


  1. Find more detailed comparison at http://blog.digiqt.com/index.php/2017/04/23/how-you-scale-infrastructure-with-distributed-messaging/


Post a Comment