PROPID_M_CORRELATIONID

 

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 PROPID_M_CORRELATIONID property specifies the correlation identifier of the message.

Property ID

PROPID_M_CORRELATIONID

Type Indicator

VT_VECTOR | VT_UI1

MQPROPVARIANT Field

caub

Property Value

Application-defined 20-byte message identifier (default is 0).

Remarks

When sending a message, PROPID_M_CORRELATIONID provides an application-defined identifier that the receiving application can use to sort or filter messages. The correlation identifier must be a 20-byte identifier. If the length of the correlation identifier is not exactly 20 bytes, an MQ_ERROR_ILLEGAL_PROPERTY_SIZE error will be returned when the application attempts to send the message.

To set the correlation identifier of a message, specify PROPID_M_CORRELATIONID in the MQMSGPROPS structure and call MQSendMessage. The correlation ID is specified in an array of unsigned characters, whose size must be PROPID_M_CORRELATIONID_SIZE (20).

To retrieve the correlation identifier of a message, include PROPID_M_CORRELATIONID and a buffer consisting of an array of unsigned characters with a length of PROPID_M_CORRELATIONID_SIZE (20) to receive its value in the MQMSGPROPS structure. Then call MQReceiveMessage or MQReceiveMessageByLookupId and examine its returned value.

Note

The buffer must consist of exactly 20 unsigned characters. Specifying either a smaller or larger buffer will result in an error.

When sending response messages to the sending application, PROPID_M_CORRELATIONID can be set to the message identifier (PROPID_M_MSGID) of the message that is in the queue. This provides an easy mechanism that the sending application can use to match the response message with the message that was sent.

When Message Queuing generates an acknowledgment message, it uses the PROPID_M_CORRELATIONID property to specify the message identifier of the original message. The application retrieving the acknowledgment messages can then use PROPID_M_CORRELATIONID to identify the original message associated with the acknowledgment message.

When sending messages to a foreign queue, the value of PROPID_M_CORRELATIONID is used to verify the sender's signature.

Equivalent COM Property

With COM components, the equivalent property for setting and retrieving the correlation identifier is MSMQMessage.CorrelationId.

For information on See
What is in a response message Response Messages
Acknowledgment messages in administration queues Administration Queues
Sending messages to foreign queues Connector Services

Example Code

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

UCHAR rgucCorrelationID[PROPID_M_CORRELATIONID_SIZE];  
aMsgPropId[i] = PROPID_M_CORRELATIONID;      // Property ID  
aMsgPropVar[i].vt = VT_VECTOR | VT_UI1;      // Type indicator  
aMsgPropVar[i].caub.pElems = rgucCorrelationID;  
aMsgPropVar[i].caub.cElems = PROPID_M_CORRELATIONID_SIZE;  
i++;  

The following examples are included in Using Message Queuing.

For an example of See
Setting the correlation identifier in a response message C/C++ Code Example: Returning Response Messages
Using the correlation identifier to filter the messages in a queue C/C++ Code Example: Correlation Identifier Filters
Using the correlation identifier to locate the acknowledgment message that was returned for a specific message C/C++ Code Example: Matching Acknowledgment Messages

See Also

Message Properties
MQMSGPROPS
MQReceiveMessage
MQReceiveMessageByLookupId
MQSendMessage
PROPID_M_MSGID