RabbitMQ, ACTIVEMQ, and ZEROMQ are excellent messaging middleware, but which of our options is better for our project? Many developers face this annoyance. Below I will make a comparison of the three message middleware, after you have seen it.
RABBITMQ is a leading implementation of the AMQP protocol that implements the broker architecture, meaning that messages can be queued on the central node before they are sent to the client. This feature makes RABBITMQ easy to use and deploy, and is suitable for many scenarios such as routing, load balancing, or message persistence, with Message Queuing just a few lines of code. However, this makes it less scalable and slower, because the central node increases latency, and the message is packaged larger.
ZEROMQ is a very lightweight messaging system specifically developed for high-throughput/low-latency scenarios, which can often be found in financial applications. Compared with RABBITMQ, ZEROMQ supports many advanced messaging scenarios, but you must implement individual blocks in the ZEROMQ framework (such as sockets or device). ZEROMQ is very flexible, but you have to learn its 80-page manual (if you want to write a distributed system, be sure to read it).
ACTIVEMQ resides between the two, similar to the ZEMOMQ, which can be deployed in proxy mode and peer-mode. Similar to RABBITMQ, it is easy to implement high-level scenarios, and it only requires a low consumption. It is known as the "Swiss Army Knife" of message middleware.
Note that ACTIVEMQ's next-generation product is Apollo.
Ultimately, these three products:
1. There are client APIs and support for multiple programming languages;
2. There are a lot of documents;
3. Positive support has been provided.
Technology selection of message middleware-RABBITMQ, ACTIVEMQ and ZEROMQ