This is very helpful if you're dealing with large unreliable networks, such as an enterprise WAN or the Internet. MSMQ notification services inform the sender that the message was received and processed. They also handle messages that time out, which gives developers the chance to take corrective action when such events occur. For example, an order processing system may process larger orders, or orders from preferred customers, at a higher priority. Finally, the journaling subsystem maintains copies of messages moving through the system.
Developers are able to select messages and queues for the journal.
The idea is to allow developers to recover from failures by bringing the messages into synch with the journals. You need to pass in the name and destination queue, which creates the queue handle. The handle allows MSMQ to identify the destination queues to the MSMQ server sending the message. Next, you create a message by allocating local memory and adding information to the message. Here is where you have an option to add parameters, such as timeout values, names of response queues, and priorities.