Improving the Performance of Distributed Applications Messaging Distributed applications pass messages between code running on different computers, either synchronously or asynchronously. With a synchronous exchange, both the sender and the receiver must be running at the same time. This is the model implied by traditional ORPC programming. The notion of a queue is at the heart of a message-queuing application. Senders send messages to a named queue rather than directly to the receiving application.
Receivers open that named queue to remove messages for further processing.
You can assign different priorities to the messages and respond to them in priority sequence. You can forward messages to another by placing them in his queue. And some messages are addressed not directly to you but to a group of which you are a member, so anyone in the group can process those messages. The powerful abstraction provided by a queue is what allows you to build distributed applications whose components are truly independent of each other. MSMQ allows three possible results of message transmission.