Message Queuing provides a way for applications to communicate asynchronously, and has often been compared to e-mail, but for applications rather than people. On Windows, Message Queuing is implemented in Microsoft Message Queuing, or MSMQ. A client application can communicate with a server by sending data in the form of an MSMQ message to a particular queue, where the server application can retrieve it and process it. Because the message will remain on the queue until it is retrieved, we can guarantee that it will be processed at some point, even if the server application is down when the message is sent.