Message queues provide an asynchronous communication protocol. In an asynchronous communication protocol, the sender and the receiver need not interact with the message queue simultaneously.
Typical HTTP, on the other hand, is a synchronous communication protocol, meaning that the client is blocked until the operation is completed.
Consider this; you call someone on the phone, then you wait for the phone to ring and the person you talk to listens to whatever you have to say then and there. At the end of the communication you say goodbye and that is acknowledged by someone on the other end saying goodbye back. This can be considered synchronous as you don't do anything until you get a response from the person you're communicating with to end the communication.
However, if you were to send a text message to someone instead, after you send that message you can go off and do whatever behavior you please; you can receive a message in return to the one you sent when they want...