windows-nt/Source/XPSP1/NT/inetsrv/msmq/sdk/samples/mqtrans
2020-09-26 16:20:57 +08:00
..
makefile Add source files 2020-09-26 16:20:57 +08:00
mqtrans.cpp Add source files 2020-09-26 16:20:57 +08:00
mqtrans.dsp Add source files 2020-09-26 16:20:57 +08:00
mqtrans.mak Add source files 2020-09-26 16:20:57 +08:00
readme.txt Add source files 2020-09-26 16:20:57 +08:00

Sample:	MQTRANS		

Purpose: 
C++ console app that demonstrates how to send/receive coordinated transactions that include MSMQ messages and SQL 
database updates.  In this case, sums of money are transferred between the sender and the receiver via messages and 
each transaction sum is recorded in a database.

Requirements:   
		MSMQ1.0 or later
		SQL 6.5
	       	ODBC
		DS enabled computer (application fails and exits if local computer is DS disabled)

Before running the sample, you must add MSMQDemo as DSN: 
		Control Panel - Administrative tools - Data Sources (ODBC) - User DSN -
		- add - SqlServer - DataSourceNAme=MSMQDemo, Server=Local

Overview:
The mqtrans application takes a single param: either "-s" or "-r".  Where "-s" specifies a sending instance of the application 
and "-r" specifies a receiving instance.

A sending instance of the applications performs the following steps:
1. Creates a new database table "SenderAccount".
2. Locates a MSMQ queue of type MQTransTest and opens it. For simplicity, this sample assumes there's only 
   one queue of this type. Note that the sample will fail if this assumption is wrong.
3. In a loop:
          Prompts the user to enter TransferSum.
          Creates a transaction using MS DTC.
          Within the transaction:
               Updates "SenderAccount" database (subtracts TransferSum).
               Sends a message to Receiver side.
          Commits the transaction.
   The loop is terminated if the user enters a zero TransferSum.
4. Cleanup.

A receiving instance of the application does the following:
1. Creates database "ReceiverAccount".
2. Creates a MSMQ a local public queue (with the Transactional property) of type MQTransTest and opens it.
3. In a loop:
          Creates a transaction using MS DTC.
          Within the transaction:
               Receives a message from the queue (with the TransferSum).
               Updates "ReceiverAccount" database (adds TransferSum).
          Commits the transaction.
4. Cleanup.