MSMQ – Microsoft Message Queue Introduction

Microsoft Message Queue (MSMQ):
MSMQ is a messaging protocol that allows applications running on separate servers/processes to communicate in a failsafe manner. A queue is a temporary storage location from which messages can be sent and received reliably, as and when conditions permit. Queues are used to receive and send the Messages.

To Install MSMQ, Go to Control Panel -> Add Remove Program -> Add Windows Component and select “Message Queuing”

Install MSMQ - Microsoft Messaging Queue

Install MSMQ - Microsoft Messaging Queue

There are two types of Messaging Queue:

1. Public Queue:

  • Provide Message routing.
  • Public queues are accessed through “Machine nameQueue name”

2. Private Queue:

  • Do not Provide any routing.
  • Private queues are accessed through “Machine namePrivate$Queue name”.
  • If MSMQ is installed on the same machine as your application then you can replace the machine name with a dot, for example “.Private$Sales”

MSMQ is deployed in two mode:
1. Workgroup mode

  • only private Queue therefore no messaging routing
  • only “Common” and “Trigger” components needed.

2. Domain mode

  • private and public queue.
  • Machine that installed MSMQ must be the part of domain and uses Active Directory.
  • “Common”, “Trigger”, “Active Directory Integration”, “Routing Suport” components are needed.

MSMQ Installs two window services also:

  1. Message Queueing
  2. Message Queueing Triggers

Administrative interface:
To Open admin Panel , My Computer -> Manage -> Services and Applications -> Message Queueing.

MSMQ Admin panel

MSMQ Admin panel

Under each queue you will find following three items:

1. Queue Messages

  • All the messages currently seating in Queue.
  • You can view the properties of all messages but cannot change it.
  • Cannot create new messages or cannot delete an individual existing messages.
  • You can delete all the messages by right click on “Queue messages” and select “All Tasks | Purge”

2. Journal Messages

  • During Queue creation journal can be “enabled” means a copy of message from queue is placed into journal.
  • Means you have the copy of all messages of queue which is read or processed.
  • Purge (Delete) messages regulary from journal otherwise its size will be increased.

3. Triggers

  • Allows to register the Trigger when message is placed in Queue.
  • During Trigger setting you can specify COM component or external executable.

Other than Public and Private Queue, one more Queue is present which is “System Queue”. Which cannot be modified or removed.

Under System Queue you will find following three items:
1. Journal Messages:

  • During Queue creation journal can be “enabled” means a copy of message from queue is placed into journal. And if the journal is not enabled then copy of message is placed in “System queue’s journal” (condition it should be enabled at code).  Means its your choice that you want to maintain journal at system queue level or message queue level.

2. Dead – Letter Messages :

  • copy of all the Messages which are not delivered or expired before deliver or expired before its read / received (condition it should be enabled at code).

3. Transactional Dead – Letter Messages:

  • Same as “Dead – Letter Messages” but its for Transactional Messages.
  • http://blog.plumbersmate.EU John Breakwell

    Hi

    You say that Public queues are “Slower than Private Queue”. This is incorrect. All queues are the same.

    If you are talking about the overhead of looking up the queue object in Active Directory then you have a point but this overhead can avoided by using DIRECT addressing and format names instead of path names.

    This sentence “If MSMQ is installed on the same machine as your application then you can replace the machine name with a dot, for example “.Private$Sales”” also applies to public queues.

    You have not clearly understood Journal messages. The “System queues – journal messages” folder is for messages that have been successfully sent to another machine. This is enabled in code.
    A “journal messages” folder associated with a specific queue is enabled in the queue properties and shows messages successfully read form that queue.

    Similarly, dead-letter queues will only contain messages if the appropriate property is enabled in code.

    Cheers
    John Breakwell

  • Sugumar

    How to copy public message queue from 2003 server to windows 2008 server?