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.
This sequence diagram demonstrates a scenario in which a client receives a message from a queue within the context of a transaction. Although four roles are used to illustrate the participants in this scenario, the protocol that is described by this specification is used only between the client and server roles. The "Client Distributed Transaction Coordinator (DTC)" role (as specified in [MS-DTCO]) and the "Server DTC" role are included to illustrate a typical end-to-end sequence of a transactional receive request.
The diagram includes reference numbers on the left side that identify operations of interest, which are explained in detail following.
Figure 3: The client receives a message within a transaction.
The client communicates with the local DTC to create a new transaction, as specified in [MS-DTCO] section 3.3.4.1.
The client constructs a propagation token to be marshaled to the server's transaction manager, as specified in [MS-DTCO] section 2.2.5.4.
The client calls the R_QMEnlistRemoteTransaction (Opnum 12) (section 3.1.4.12) method, specifying the transaction identifier and the transaction propagation token.
The server marshals the transaction propagation token to its local transaction manager and enlists its local resource manager in the transaction, as specified in [MS-DTCO] sections 3.3.4.12 and 3.5.4.3.
The client calls the R_StartTransactionalReceive (Opnum 13) (section 3.1.4.13) method to receive a message in the context of the transaction. The client specifies the transaction identifier to associate the receive operation with the transaction enlisted in the prior steps. The server returns a message in the SectionBuffer (section 2.2.6) array.
The client advises the server that the message was received correctly by calling the R_EndTransactionalReceive (Opnum 15) (section 3.1.4.15) method, specifying RR_ACK (0x00000002) for the dwAck parameter.
The client commits the transaction, as specified in [MS-DTCO] section 3.3.4.8.2. The client DTC transaction manager notifies the server DTC transaction manager of the commit request.
After receiving notification of the commit from the server DTC via the DTC Transaction Commit ([MS-MQDMPR] section 3.1.4.7) event, the server deletes the message from the queue.