What is MSMQ?
MSMQ stands for Microsoft Message Queuing. It's a message queuing framework used for applications that use messaging infrastructure. MSMQ is a tool for sending and receiving messages. MSMQ is powerful enough to provide near real-time message exchange throughput, depending on the machines and transports involved in the exchange, and flexible enough to provide many features required in assembling a communications infrastructure for your application system. You can send MSMQ messages across machine boundaries—including across the Internet—to queues where a receiving application can retrieve them in a prioritized first-in first-out manner. MSMQ also integrates with Active Directory to provide domain-wide queue management features.
What is a Message?
A message is a set of data that needs to be transmitted from one application to another application, on the same or a different computer in a network.
What is a Message Queue?
A message queue is the location where messages are stored, which can be written and read by applications.
Message queuing enables programs to share data across a network without necessarily having a synchronized connection linking the sending and receiving applications at the same instant. The programs do this by putting the data, or message, on a message queue, which is then retrieved by the receiving application.

For example, in the fiqure above we have two applications: a sending application and a receiving application. A sending application prepares a message and puts it into a queue. A message can be any piece of information that the receiving application understands. The receiving application receives the message from the queue and processes it. One thing to note here is that the sender and the receiver are not tightly coupled and they can work without the other application being online.
Sending and Receiving Messages
To create a message, an application specifies the message fields or properties and supplies the field values. The application then issues a Message Queuing or MQSeries API call to send the message.
The Message Queuing or MQSeries Queue Manager (server) transmits the message to the destination message queue. If the destination location is not connected to the network when the message is sent, the message queuing system stores the message at an interim location. The system forwards the message automatically when a connection is established.
To receive a message, an application issues an API call that reads the message from the queue.

System.Messaging Namespace
The System.Messaging namespace provides a set of classes which can be used to work with MSMQ.
The MessageQueue class provides all the necessary functionality to work with and manipulate MSMQ queues. It is like a wrapper around message queuing.
The Message class provides everything required to define and use an MSMQ message.
Links
Programming MSMQ in .NET - Part 1 (recommended)
http://www.codeproject.com/dotnet/mgrmsmq.asp
Programming MSMQ in .NET - Part 2: Transactional Messaging (recommended)
http://www.codeproject.com/dotnet/msmqpart2.asp
MSMQ for .NET Developers (Part 1)
http://www.devx.com/dotnet/Article/27560/1954?pf=true
MSMQ for .NET Developers, Part 2
http://www.devx.com/dotnet/Article/27922/1954?pf=true
Accessing Message Queues: Building Distributed Applications with .NET
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnbda/html/bdadotnetasync1.asp
Reliable Messaging with MSMQ and .NET: Building Distributed Applications with .NET
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/Dnbda/html/Bdadotnetasync2.asp
Microsoft Message Queue Is a Fast, Efficient Choice for Your Distributed Application
http://www.microsoft.com/msj/0798/messagequeue.aspx
MSMQ, Your Reliable Asynchronous Message Processing
http://www.csharphelp.com/archives3/archive581.html
Leveraging MSMQ in ASP.NET Applications (recommended)
http://www.internet.com/icom_cgi/print/print.cgi?url=http://www.15seconds.com/issue/031202.htm
Enjoy Computing !@!