3.1.5.1.5 Identifying the Message Type
A message is identified by inspecting the contents of its SOAP <header> element (see section 2.2.2). The following section describes how to identify each message type. Any message that does not match one of the types defined below MUST be ignored. For details about message class identifiers, see [MS-MQMQ] section 2.2.18.1.6.
If the <Class> element of the <Msmq> element is set to MQMSG_CLASS_NORMAL and the <deliveryReceipt>, <streamReceipt>, and <commitmentReceipt> elements are not present, the message is a User message and MUST be processed according to User Message Processing (section 3.1.5.1.6).
If the <deliveryReceipt> element is present, the <streamReceipt> and <commitmentReceipt> elements are not present, and the <Class> element of the <Msmq> element is set to MQMSG_CLASS_ACK_REACH_QUEUE, the message is a Delivery receipt message and MUST be processed according to Delivery Receipt Message Processing (section 3.1.5.1.7).
If the <streamReceipt> element is present, the <deliveryReceipt> and <commitmentReceipt> elements are not present, the <action> element of the <path> element is set to "MSMQ:QM Ordering Ack", and the <Class> element of the <Msmq> element is set to MQMSG_CLASS_ORDER_ACK, the message is a Stream receipt message and MUST be processed according to Stream Receipt Message Processing (section 3.1.5.1.8).
If the <streamReceipt> element is present, the <commitmentReceipt> element is present, the <deliveryReceipt> element is not present, the <action> element of the <path> element is set to "MSMQ:QM Ordering Ack", and one of the following is true, the message is a Final stream receipt message and MUST be processed according to Final Stream Receipt Message Processing (section 3.1.5.1.9).
The <Class> element of the <Msmq> element is set to MQMSG_CLASS_ACK_RECEIVE and the <decision> element contains the string "positive".
The <Class> element of the <Msmq> element is set to MQMSG_CLASS_NACK_DELETED, the <decision> element contains the string "negative", and the remote queue was purged by an administrative action before being received, as specified in [MS-MQRR] section 3.2.4.7.
The <Class> element of the <Msmq> element is set to MQMSG_CLASS_NACK_Q_DELETED, the <decision> element contains the string "negative", and the original message was deleted from the destination queue because the queue was deleted.
The <Class> element of the <Msmq> element is set to MQMSG_CLASS_NACK_Q_PURGED, the <decision> element contains the string "negative", and the original message was deleted from the destination queue because the queue was purged.
The <Class> element of the <Msmq> element is set to MQMSG_CLASS_NACK_RECEIVE_TIMEOUT and the <decision> element contains the string "negative" and the original message was deleted from the destination queue because the message expired.
If the <commitmentReceipt> element is present, the <streamReceipt> and <deliveryReceipt> elements are not present, and one of the following is true, the message is a Commitment receipt message and MUST be processed according to Commitment Receipt Message Processing (section 3.1.5.1.10).
The <Class> element of the <Msmq> element is set to MQMSG_CLASS_ACK_RECEIVE and the <decision> element contains the string "positive".
The <Class> element of the <Msmq> element is set to MQMSG_CLASS_NACK_DELETED, the <decision> element contains the string "negative", and the remote queue was purged by an administrative action before being received, as specified in [MS-MQRR] section 3.2.4.7.
The <Class> element of the <Msmq> element is set to MQMSG_CLASS_NACK_Q_DELETED, the <decision> element contains the string "negative", and the original message was deleted from the destination queue because the queue was deleted.
The <Class> element of the <Msmq> element is set to MQMSG_CLASS_NACK_Q_PURGED, the <decision> element contains the string "negative", and the original message was deleted from the destination queue because the queue was purged.
The <Class> element of the <Msmq> element is set to MQMSG_CLASS_NACK_RECEIVE_TIMEOUT, the <decision> element contains the string "negative", and the original message was deleted from the destination queue because the message expired.