It's handy when certain actions that your system performs is really slow compared to everything else. You send a message to a queue that will result in the action eventually occurring, and then you go on with your business. One example would be building a full-text index of a large file (or group of files). You don't need to hold up your user while that slow process goes, so you send it to a queue and let worker processes do their thing. If the process is not only slow, but also compute-intensive, these worker processes can be on a different machine/farm of machines.