2.2.18.1.6 Message Class Identifiers

A message class identifier is used to indicate the type of a message. In some cases the class identifier can also indicate that the message is generated as a response to an action on another message such as its receipt by a higher-layer messaging application or a delivery failure. This other message is referred to as the original message in the text that follows. The sender of the original message is referred to as the original sender in the text that follows.

 The MESSAGE_CLASS_VALUES enumeration identifies the predefined message types.

Alternatively, the sending application can set the type of a message to a custom value by setting one or more bits of the mask 0xE1FF and by leaving the remaining bits as zero.

 typedef  enum 
 {
   MQMSG_CLASS_NORMAL = 0x0000,
   MQMSG_CLASS_REPORT = 0x0001,
   MQMSG_CLASS_ACK_REACH_QUEUE = 0x0002,
   MQMSG_CLASS_ORDER_ACK = 0x00ff,
   MQMSG_CLASS_ACK_RECEIVE = 0x4000,
   MQMSG_CLASS_NACK_BAD_DST_Q = 0x8000,
   MQMSG_CLASS_NACK_DELETED = 0x8001,
   MQMSG_CLASS_NACK_REACH_QUEUE_TIMEOUT = 0x8002,
   MQMSG_CLASS_NACK_Q_EXCEED_QUOTA = 0x8003,
   MQMSG_CLASS_NACK_ACCESS_DENIED = 0x8004,
   MQMSG_CLASS_NACK_HOP_COUNT_EXCEEDED = 0x8005,
   MQMSG_CLASS_NACK_BAD_SIGNATURE = 0x8006,
   MQMSG_CLASS_NACK_BAD_ENCRYPTION = 0x8007,
   MQMSG_CLASS_NACK_NOT_TRANSACTIONAL_Q = 0x8009,
   MQMSG_CLASS_NACK_NOT_TRANSACTIONAL_MSG = 0x800A,
   MQMSG_CLASS_NACK_UNSUPPORTED_CRYPTO_PROVIDER = 0x800B,
   MQMSG_CLASS_NACK_Q_DELETED = 0xC000,
   MQMSG_CLASS_NACK_Q_PURGED = 0xC001,
   MQMSG_CLASS_NACK_RECEIVE_TIMEOUT = 0xC002,
   MQMSG_CLASS_NACK_RECEIVE_REJECTED = 0xC004
 } MESSAGE_CLASS_VALUES;

MQMSG_CLASS_NORMAL:  Indicates the original message sent on behalf of a higher-layer messaging application.

MQMSG_CLASS_REPORT:  Indicates a report message used to track delivery of sent messages. For more information, see [MS-MQQB] section 3.1.5.8.9.

MQMSG_CLASS_ACK_REACH_QUEUE:  The class is used by administration acknowledgment messages.

Indicates that the original message was delivered to its destination queue.

MQMSG_CLASS_ORDER_ACK:  The class is used to acknowledge in-order receipt of an original transactional message. This acknowledgment MUST be sent from the final destination queue manager to the original sender.

MQMSG_CLASS_ACK_RECEIVE:  The class is used by administration acknowledgment messages.

Indicates that the original message was retrieved by a receiving application from the destination queue.

MQMSG_CLASS_NACK_BAD_DST_Q:  Indicates that the destination queue is not available to the original sender.

MQMSG_CLASS_NACK_DELETED:  Indicates that the original message was deleted by an administrative action before reaching the destination queue.

MQMSG_CLASS_NACK_REACH_QUEUE_TIMEOUT:  Indicates that the original message did not reach the destination queue. This message can be generated by expiration of either the UserMessage.UserHeader.TimeToBeReceived time or UserMessage.BaseHeader.TimeToReachQueue time before the original message reaches the destination queue.

MQMSG_CLASS_NACK_Q_EXCEED_QUOTA:  Indicates that the original message was rejected by the destination queue manager because the destination queue exceeded Quota.

MQMSG_CLASS_NACK_ACCESS_DENIED:  Indicates that the access rights for placing the original message in the destination queue were not allowed for the sender.

MQMSG_CLASS_NACK_HOP_COUNT_EXCEEDED:  Indicates that the original message was rejected because it exceeded the maximum routing hop count.

MQMSG_CLASS_NACK_BAD_SIGNATURE:  Indicates that the digital signature attached to the original message is not valid.

MQMSG_CLASS_NACK_BAD_ENCRYPTION:  Indicates that the destination queue manager could not decrypt the original message.

MQMSG_CLASS_NACK_NOT_TRANSACTIONAL_Q:  Indicates that the original transactional message was sent to a nontransactional queue.

MQMSG_CLASS_NACK_NOT_TRANSACTIONAL_MSG:  Indicates that the original nontransactional message was sent to a transactional queue.

MQMSG_CLASS_NACK_UNSUPPORTED_CRYPTO_PROVIDER:  Indicates that the encryption provider requested in the original message is not supported by the destination.

MQMSG_CLASS_NACK_Q_DELETED:  Indicates that the queue was deleted before the original message could be read from the queue.

MQMSG_CLASS_NACK_Q_PURGED:  Indicates that the queue was purged and the original message no longer exists.

MQMSG_CLASS_NACK_RECEIVE_TIMEOUT:  Indicates that the original message was placed in the destination queue but was not retrieved from the queue before its time-to-be-received timer expired.

MQMSG_CLASS_NACK_RECEIVE_REJECTED:  Indicates that the message was rejected by a receiving application.