There are many reasons for using messaging in your applications. It can help you:
improve response times by doing some tasks asynchronously
reduce complexity by decoupling and isolating applications
build smaller apps that are easier to develop, debug, test, and scale
build multiple apps that each use the most suitable language or framework versus one big monolithic app
get robustness and reliability through message queue persistence
potentially get zero-downtime redeploys
distribute tasks across machines based on load