January 30, 2005

Message Queuing storage for local queues

Message Queuing does not use a database for storing messages. In particular, Message Queuing does not store messages in the MQIS database or in Active Directory. Messages are stored in a proprietary format in multiple 4-MB files in the MSMQ\Storage folder. The only way to move these message files to another directory is to move them from the Message Queuing Control Panel application in MSMQ 1.0 and Message Queuing 2.0, or from the Computer Management application in Message Queuing 3.0. Any other manipulation of these files can corrupt your Message Queuing installation.

Note In a cluster configuration, the location of the MSMQ\Storage folder on the shared disk cannot be altered. The clustered instance of MSMQ will always use that location. You can move the location of the storage filder used by the MSMQ instance on the physical node.

For more information about the storage directory, see http://support.microsoft.com/kb/174307.

Where does Message Queuing keep messages that I send to other computers?

Outgoing messages are kept in the same files that are used to store local messages. The Message Queuing service creates dynamic outgoing queues to store messages awaiting transmission to other computers. These queues are deleted when all messages have been transmitted and the queue is empty. Message Queuing manipulates these outgoing queues with no user intervention. The same mechanism is used on intermediate Message Queuing routing servers.

It is important to emphasize that when an application needs to send messages to a remote queue it simply opens that remote queue for send. It does not need to do anything related to local outgoing queues. The Message Queuing Service takes care of managing the local outgoing queues. This is transparent to the application.

Note Outgoing queues can be managed and monitored using performance counters and the Message Queuing management API.

Note There is no association between messages files and queues. A single messages file can store messages from multiple queues and multiple queue types (local, outgoing, public, private). A queue's messages are stored in multiple files. The file names are sequencials, unrelated to any queue name