Messaging systems have always been an important architectural component of many systems. With the rising popularity of microservices and reactive programming, the MQ workload increases significantly, setting new requirements as to their performance and resilience.
We will take a look at a specific subset of messaging systems: ones which offer both persistence and replication. In other words, ones that will make sure that messages are not lost, even in case of hardware failure.
The evaluation will include RabbitMQ, HornetQ and Kafka, as well as a MongoDB-based queue and the as-a-service offering from Amazon, SQS. Apart from a look at their messaging protocols and semantics, we will see what is their performance, scaling characteristics and how they compare to each other.
With such information, it should be much easier to make an informed choice when looking for a messaging system for your next project!