MSMQ : What’s it all about?

MSMQ, or Microsoft Message Queue has been around since NT Server as an optional installable feature (not installed by default). The server essentially allows messages to be send from one application (including web applications over HTTP) to another, queuing them if one of the applications goes down. The server itself manages each of the queues and the inbound / outbound flow of messages. For Microsoft BPM tools, MSMQ can be an important part of an implementation, especially implementations that use a message broker or message bus like Biztalk Server which uses its MSMQ adaptor to deliver and retrieve messages from the Message Queue and move them through process orchestrations. Softshare ECS (eCommerce Server) by Santa Barbara based Softshare Inc although more of a communications server also accesses MSMQ messages.

Message queue operations are tied into Windows Integration authentication (NTLM or Kerberos) so to control user queue actions through access control lists. When the MSMQ server is installed it enables the MSMQ snap in and allows you to manage your active message queues along with queued messages through the computer management console.

Message Queuing MMC

An MSMQ Message

An MSMQ message is just a container that has multiple properties.  Example properties are MESSAGE TYPE, DESTINATION QUEUE, MESSAGE PRIORITY and MESSAGE BODY (your normal message characteristics).  The message body clearly resides in its same named property. Using the .NET Message and MessageQueue classes allow for writing messages and adding them or receiving them from a message queue. The Message class is for constructing the message (assigning values to its properties) and is passed to the MessageQueue class which represents a particular message queue on the server. The message itself can also be secured through the SECURITY ID and SYMMETRIC KEY properties.


Decouples Messages from the sending application to the receiving by using the queue. The server can also manage a transaction of messages between queues on a single server (all or nothing transfer commit). Messages that cannot be delivered and time out are moving to a dead queue.

Message Triggers. This allows for execution of a COM object as a trigger of certain message criteria.

Easy Accessibility. The MSMQ server queues can be accessed through .NET (via the System.Messaging namespace), COM and MFC libraries as well as over HTTP.  NLB is also supported by sending messages to the main NLB clusters IP address).

Event Logging. The Message Queue Server queue events can be tracked and place audit messages into the windows event log.

Security. Messages can be signed and encrypted (using Active Directory certificate services (mapping an X.500 cert to an active directory user).