1.3.5 Transactions

The protocol allows the queue operations Receive or Move to be performed within the context of a distributed atomic transaction, as specified in [MS-DTCO]. When this is done, the state changes that are related to the queue associated with the operation are performed provisionally, awaiting asynchronous notification of the outcome of the transaction. If the transaction outcome is Commit, the state changes become permanent. If the transaction outcome is Abort, the state changes are rolled back.

The protocol does not require that all queues support this atomic transaction behavior. A queue that supports transactional Receive is also required to support nontransactional Receive. The protocol returns an error if a transacted operation is attempted against a non-transactional queue. The protocol does not provide any other mechanism for determining whether a queue supports transactional behavior.