MSMQ message delivery can be wrapped as an MTS transaction, just as any other ASP script. This sample illustrates how to open a transacted queue, and send a simple message to it, all within a transaction wrapper.
Like any other transacted Web page, this sample starts with the @TRANSACTION=REQUIRED directive. All actions taken by the script, such as an MSMQ message transmission, will be grouped together as one single, indivisible transaction that either is completed or aborted in its entirety.
This example then creates an instance of the MSMQQueueInfo object, which will be used as a template for the actual queue object instances. MSMQQueueInfo contains a number of properties that can be used to configure the queue instances it will create, but in this sample, only the PathName property is set. PathName specifies the MSMQ pathname of the queue, and is given in the general form MachineName\QueueName. Note that in this example, the MachineName part of the MSMQ pathname is a period (.), which indicates that the queue is located on the local computer.
The MSMQQueueInfo.Open method is used to create an instance of the actual queue object, MSMQQueue, and the variable Queue is set to refer to the new queue instance.
At this point, having gained access to the IIS_SDK_TRANSACTED queue, this sample now creates a new message object by instantiating MSMQMessage. The reference to the instance, Msg, is used to set the description and content of the message using the Label and Body properties. The Delivery property, which indicates whether express or recoverable delivery is used, is also set at this time. For this demonstration, it has been set to indicate that MSMQ is to use recoverable delivery.
With the message complete and the queue configured, the script is ready to send the message. The MSMQMessage.Send method is called to send the message to the queue pointed to by the reference Queue, and the queue is closed with the Close method. If the script, and hence the transaction, completed without error, the OnTransactionCommit method is executed, and you are notified of the success. Any errors encountered in the execution of the sample will cause OnTransactionAbort to be called instead.
Important This sample requires that MSMQ be installed on your host machine. It also requires, prior to running this sample for the first time, that you start MSMQ Explorer and create a new transacted queue named IIS_SDK_TRANSACTED. MSMQ Explorer can also be used after the sample is run so that you can examine the results of the script's execution.
The VBScript and JScript versions of this script are available in the IIS samples directory, at ...\asp\queuing\TransactedDelivery_VBScript.asp and ...\asp\queuing\TransactedDelivery_JScript.asp.