Acknowledgment Message Classes

 

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

Acknowledgment message classes can be divided into three groups: positive acknowledgments, negative arrival acknowledgments, and negative read acknowledgments. The system sets the class property of the acknowledgment message when it creates the acknowledgment message.

Positive Acknowledgment Classes

MQMSG_CLASS_ACK_REACH_QUEUE

Indicates that the original message reached its destination queue.

MQMSG_CLASS_ACK_RECEIVE

Indicates that the original message was retrieved by the receiving application.

Negative Arrival Acknowledgment Classes

The following classes of negative acknowledgment messages are generated if the message fails to arrive at the destination queue.

MQMSG_CLASS_NACK_ACCESS_DENIED

Indicates that the access rights for placing messages in the destination queue are not allowed for the sender.

MQMSG_CLASS_NACK_BAD_DST_Q

Indicates that the destination queue is not available to the sender.

MQMSG_CLASS_NACK_BAD_ENCRYPTION

Indicates that the destination queue manager could not decrypt a private message.

MQMSG_CLASS_NACK_BAD_SIGNATURE

Indicates that Message Queuing could not authenticate the original message. The digital signature attached to the original message is not valid.

MQMSG_CLASS_NACK_COULD_NOT_ENCRYPT

Indicates that the source queue manager could not encrypt a private message.

MQMSG_CLASS_NACK_HOP_COUNT_EXCEEDED

Indicates that the message hop count was exceeded. The maximum hop count is set by Message Queuing (hop count = 15) and cannot be changed.

MQMSG_CLASS_NACK_NOT_TRANSACTIONAL_MSG

Indicates that a nontransactional message was sent to a transactional queue.

MQMSG_CLASS_NACK_NOT_TRANSACTIONAL_Q

Indicates that a transactional message was sent to a nontransactional queue.

MQMSG_CLASS_NACK_PURGED

Indicates that the message was purged before reaching the destination queue.

MQMSG_CLASS_NACK_Q_EXCEED_QUOTA

Indicates that the message was not delivered because the destination queue is full.

MQMSG_CLASS_NACK_REACH_QUEUE_TIMEOUT

Indicates that the message did not reach the destination queue. It can be generated by either the time-to-reach-queue timer or time-to-be-received timer.

MQMSG_CLASS_NACK_SOURCE_COMPUTER_GUID_CHANGED

Indicates that the source computer joined a domain or moved to a new forest while the transactional message was waiting in an outgoing queue to be delivered to its destination. As a result, the source computer has a new msmq (MSMQ-Configuration) object with a new GUID, so the message was moved to the transactional dead-letter queue or discarded to prevent a possible duplicate message from reaching the destination queue.

MQMSG_CLASS_NACK_UNSUPPORTED_CRYPTO_PROVIDER

Indicates that the destination queue manager does not have the enhanced (128-bit) cryptographic provider installed.

Negative Read Acknowledgment Classes

The following classes of negative acknowledgment messages are generated if the original message is not retrieved from the destination queue:

MQMSG_CLASS_NACK_Q_DELETED.

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

MQMSG_CLASS_NACK_Q_PURGED.

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

MQMSG_CLASS_NACK_RECEIVE_TIMEOUT.

Indicates that the message was not retrieved from the queue before its time-to-be-received timer expired.

MQMSG_CLASS_NACK_RECEIVE_TIMEOUT_AT_SENDER

For transactional messages only. The local queue manager has indicated that the original message was not removed from the queue before its time-to-be-received timer expired.

This class is an in-doubt negative acknowledgment. For example, the local queue manager will set this class when the time-to-be-received timer expires, even though a positive confirmation may be in route from the remote queue manager.

More Information

For an example of See
Sending messages that request acknowledgments C/C++ Code Example: Requesting Acknowledgment Messages

 Visual Basic Code Example: Requesting Acknowledgment Messages
Verifying that acknowledgments were requested C/C++ Code Example: Verifying Acknowledgment Requests

 Visual Basic Code Example: Verifying Acknowledgment Requests
Filtering acknowledgment messages based on acknowledgment class C/C++ Code Example: Acknowledgment Class Filter

 Visual Basic Code Example: Acknowledgment Class Filter