With the trend toward distributed computing in enterprise environments, it is important to have flexible and reliable communication among applications. Businesses often require independent applications that are running on different systems to communicate with each other and exchange messages even though the applications may not be running at the same time.
Microsoft® Message Queue Server (MSMQ) technology enables applications running at different times to communicate across heterogeneous networks and systems that may be temporarily offline. Within an MSMQ enterprise, applications send messages to queues and read messages from queues. The following illustration shows how queues hold the messages used by both the sending and receiving applications.
MSMQ ensures that all messages eventually reach their destination, whether a message is sent to a queue or a message is read from a queue. MSMQ provides guaranteed message delivery, efficient routing, security, and priority-based messaging.
MSMQ is different from remote procedure calls (RPC), Windows Sockets, and messaging API (MAPI). Because MSMQ is a connectionless message service where applications do not need to maintain a session, it is different from RPC where applications are required to maintain sessions. And although Windows Sockets provides low-level functions for writing applications, Windows Sockets does not allow applications to run at different times in the way that MSMQ does. MSMQ is also different from MAPI (an e-mail oriented service) in that it uses a more general-purpose message queuing model than MAPI.