We are defining an architecture to collect log information by Logstash shippers which are installed in various machines and index the data in one elasticsearch server centrally and use Kibana as the graphical layer. We need a reliable messaging system in between Logstash shippers and elasticsearch to grantee the delivery. What factors should be considered when selecting Redis over RabbitMQ as a data broker/messaging system in between Logstash shippers and the elasticsearch or vice versa?
RabbitMQ is designed as a dedicated message broker, whereas Redis is a database that you can use as a message broker. Mostly, RabbitMQ outperforms Redis and guarantees message delivery with the help of message durability and acknowledgments.
At its core, Redis is an in-memory data store that can be used as either a high-performance key-value store or as a message broker.
RabbitMQ is the most widely deployed open source message broker. With tens of thousands of users, RabbitMQ is one of the most popular open source message brokers. From T-Mobile to Runtastic, RabbitMQ is used worldwide at small startups and large enterprises.
MQTT is designed to be used for smaller devices that send messages over a network with low bandwidth. It is well-known for its simplicity (Only 5 Apis) and minimal wire footprint. On the other hand, RabbitMQ has been designed to be used for a variety of messaging scenarios that have developed over the last 25 years.
Redis is created as a key value data store despite having some basic message broker capabilities.
RabbitMQ is created as a message broker. It has lots of message broker capabilities naturally.
After evaluating both Redis and RabbitMQ I chose RabbitMQ as our broker for the following reasons:
Regarding scaling, RabbitMQ has a built in cluster implementation that you can use in addition to a load balancer in order to implement a redundant broker environment.
Is my RabbitMQ cluster Active Active or Active Passive?
Now to the weaker point of using RabbitMQ:
You can follow the issue here: https://github.com/josegonzalez/python-beaver/issues/323
And check the pull request here: https://github.com/josegonzalez/python-beaver/pull/324
If you have more questions feel free to leave a comment.
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