It has solved issues such as queue processing, real-time data processing and decrease count of Cron jobs.
The management of Cron jobs is very hard for me. If you are using RabbitMQ, you may not need a Cron job since you can create a consumer for a queue and listen to the queue in real-time. For example, you need to send an email for your new members but you want to do this from your software. The reason being if you encounter an SMTP error, you should handle it or sending an email from your membership activity can take about 5-10 seconds. If you don't use RabbitMQ, you need to create a Cron job and check for new members to send an email to them. But, if you use RabbitMQ, you do not need a Cron job. You can send a message to your queue and consume it in real-time and then send the email.
Improvements to My Organization:
I have used this solution for changing stock of products in an e-commerce project. We update the stock of products from RabbitMQ. Some of our clients can change the stock of a product, i.e., either increase or decrease it. They send the stock count to RabbitMQ as a message and our e-commerce platform changes the stock when it gets the message. Consequently, we update the database, cache, search engine service and so on.
There are too many advantages of using this solution. You can scale your processes and update your data in a nearly synchronous way.
Room for Improvement:
RabbitMQ needs 2 additional features:
- It is lacking a good dashboard on the web interface; maybe they can develop a dashboard for monitoring.
- There is no alert mechanism. For example, sometimes consumers may be killed or the input messages in queues are greater than the consumed messages. Thus, I would like them to define a rule for alert; maybe they can develop an alert mechanism.
Use of Solution:
I have used this product for three or four years.
I have not encountered any stability issues.
I have not encountered any scalability issues either.
Since it is open source, you can resolve your problems either from forums or Stack Overflow in regards to RabbitMQ.
We have used different solutions before. We have tried MySQL as a queue and it was terrible.
It is not complex.
However, if you try sharding or cluster, it is just a little complex because of Erlang.
Other Solutions Considered:
I did not look into other solutions.
I would recommend this product. It is great and resolves a lot of problems.
Disclosure: I am a real user, and this review is based on my own experience and opinions.