Windows Dev Center

Expand Minimize

PROPID_M_XACTID

(Read-only, introduced in MSMQ 2.0.) The PROPID_M_XACTID property indicates which transaction sent the message.

Property ID

PROPID_M_XACTID

Type Indicator

VT_VECTOR | VT_UI1

MQPROPVARIANT Field

caub

Property Value

Identifier of the transaction. See Remarks for a description of a transaction identifier.

Remarks

This property is available for MSMQ 2.0 and later. It is used by receiving applications to verify that a message was sent from a specific transaction. The transaction identifier is a 20-byte identifier that includes the computer identifier of the sending machine (first 16 bytes) followed by a transaction sequence number (4 bytes).

Transaction identifiers are not guaranteed to be unique because the transaction sequence numbers are not persistent and they start over again at 2^20. Message Queuing guarantees only that successive transactions will have different transaction sequence numbers.

You can use PROPID_M_XACTID along with two other properties to verify transaction boundaries. These two properties are properties for identifying the first and last message sent in a transaction: PROPID_M_FIRST_IN_XACT and PROPID_M_LAST_IN_XACT.

To retrieve the transaction identifier of a message, specify PROPID_M_XACTID and a buffer consisting of 20 unsigned characters to receive its value in the MQMSGPROPS structure.

ms705753.note(en-us,VS.85).gifNote
The buffer must consist of exactly 20 unsigned characters. Specifying either a smaller or larger buffer will result in an error.

The size of the buffer can be specified by the constant PROPID_M_XACTID_SIZE. Then call MQReceiveMessage or MQReceiveMessageByLookupId and examine the returned identifier.

Equivalent COM Property

With COM components, the equivalent property for retrieving the transaction identifier is MSMQMessage.TransactionId.

For information on See

How transaction boundaries can be used

Checking for Transaction Boundaries when Receiving Messages

Identifying the first message in the transaction

PROPID_M_FIRST_IN_XACT

Identifying the last message in the transaction

PROPID_M_LAST_IN_XACT

Example Code

The following code fragment shows how PROPID_M_XACTID is specified in arrays that can be used to initialize an MQMSGPROPS structure.

UCHAR rgucXactID[PROPID_M_XACTID_SIZE];
aMsgPropId[i] = PROPID_M_XACTID;        // Property ID
aPropVar[i].vt = VT_VECTOR | VT_UI1;    // Type indicator
aPropVar[i].caub.pElems = rgucXactID;
aPropVar[i].caub.cElems = PROPID_M_XACTID_SIZE;
i++;

The following example is included in Using Message Queuing.

For an example of See

Identifying the first and last messages in a transaction

C/C++ Code Example: Checking Transaction Boundaries

See Also

Show:
© 2015 Microsoft