Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Applies To: Windows 10, Windows 7, Windows 8, Windows 8.1, Windows Server 2008, Windows Server 2008 R2, Windows Server 2012, Windows Server 2012 R2, Windows Server Technical Preview, Windows Vista
The following is a summary of the design issues that you must consider when sending or receiving messages within a COM+ transaction (in Microsoft® Windows® 2000 or later) or an MTS transaction (in Microsoft Windows NT® 4.0 or earlier).
Specifying Queue Type
Queues used to receive transaction messages must be transactional. The property used to make a queue transactional can be set only when the queue is created.
When calling | Set |
---|---|
MQCreateQueue | The PROPID_Q_TRANSACTION property to MQ_TRANSACTIONAL. |
MSMQQueueInfo.Create | The IsTransactional parameter to TRUE. |
Joining the Current COM+ Transaction
Message Queuing can detect and become part of the current COM+ transaction. When using Message Queuing functions you must explicitly specify the COM+ transaction. When using the Message Queuing COM components, Message Queuing joins the current COM+ transaction by default.
When calling | Set |
---|---|
MQSendMessage or MQReceiveMessage | The pTransaction parameter to MQ_MTS_TRANSACTION. |
Verifying that the Current COM+ or MTS Context is Transactional
You can call the IsInTransaction method to see if the current COM+ or MTS context is transactional. This is needed to make sure only transactional messages are sent to transactional queues.
If using | Use |
---|---|
Microsoft Windows 2000 or later | The ObjectContext::IsInTransaction method provided by COM+ (Component Services). |
Send only Transactional Messages to a Transactional Queue
When sending messages, you can make sure that only transactional messages are sent to transactional queues by changing the pTransaction parameter based on the state of the current COM+ context.
If the current MTS context is | Set pTransaction to |
---|---|
Transactional | MTS_TRANSACTION |
Nontransactional | MQ_SINGLE_MESSAGE |
Other Types of Transactions under COM+
It is possible to perform other types of transactions while running under COM+. To do this, set the pTransaction parameter of the sending or receiving call to a value other than MQ_MTS_TRANSACTION, such as MQ_SINGLE_MESSAGE or MQ_XA_TRANSACTION.
For information on | See |
---|---|
Sending Transactional Messages | Sending Messages to a Transactional Queue |
Retrieving Transactional Messages | Retrieving Messages from a Transactional Queue |
How messages are placed in the queue | Ordering of Messages in a Transactional Queue |