Last week I had the chance to speak at the Norwegian Developers Conference which was a very huge event with 8 simultaneous tracks and speakers like Aral Balkan, Lea Verou and Robert C. Martin. In my case I was demoing RabbitMQ and for the first time presenting RabbitMQ in Action in a conference.
My talk mostly demoed how easy is to leverage messaging in your applications. The goal of my talk was to show that you don't need to be a big player to require messaging. If you need to do some background processing in your web app then RabbitMQ might be the tool you are looking for. What I could realized during my talk is that sometimes people fail to see the relation between doing background processing and messaging. To be more precise the relation between Job Queues and Messaging .
I often get the question “can you do job queues with RabbitMQ?”. Answer: Yes you can. The problem is when you brand your messages as “jobs” what you are doing is specializing the concept of messages, but in fact at the end you are just sending messages around. You have a server that keeps them for you and when there's a consumer (worker) ready to get those messages then RabbitMQ will send them to that consumer. It's as simple as that.
The main advantages of using messaging terminology is that you get exposed to a broader spectrum of applications for the technology. So you stop thinking just in terms of “job processing and background tasks” and you start seeing that with messaging you can do much more things like easily bringing interoperability to your app. Do you have a polyglot system and you need to integrate your Python app with your PHP code. Then use messaging and benefit from the dozen of clients that exist for different programming languages which will allow your apps to interact with each other via RabbitMQ.
There are a lot of use cases for Messaging. Many of those are best described in the book Enterprise Integration Patterns which I would greatly recommend to those interested in how messaging can help them to scale their apps and make them more decoupled than what you could achieve by using a framework like Symfony2.
To wrap up: RabbitMQ is an open source messaging server that can easily get you into the messaging dream land. If you use Symfony2 then don't hesitate to try our RabbitMQBundle that will help you to integrate RabbitMQ into your symfony applications.