Sdílet prostřednictvím


PROPID_M_ACKNOWLEDGE

 

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_ACKNOWLEDGE property specifies the type of acknowledgment messages that Message Queuing will post (in the administration queue) when acknowledgments are requested.

Property ID

PROPID_M_ACKNOWLEDGE

Type Indicator

VT_UI1

MQPROPVARIANT Field

bVal

Property Value

The MQPROPVARIANT field can be set to one or more (with the OR operator) of the following values:

MQMSG_ACKNOWLEDGMENT_FULL_REACH_QUEUE

Posts a positive or negative acknowledgment depending on whether or not the message reaches the queue.

A negative acknowledgment is posted when the time-to-reach-queue timer of the message expires, or when Message Queuing does not deliver the message to the queue for security reasons. These security reasons can include denied send access to the sending application, not being able to authenticate a message, as well as the queue not being able to accept encrypted messages.

MQMSG_ACKNOWLEDGMENT_NACK_REACH_QUEUE

Posts a negative acknowledgment when the message cannot reach the queue.

A negative acknowledgment is posted when the time-to-reach-queue timer of the message expires, or when Message Queuing does not deliver the message to the queue for security reasons. These security reasons can include denied send access to the sending application, not being able to authenticate a message, as well as the queue not being able to accept encrypted messages.

MQMSG_ACKNOWLEDGMENT_FULL_RECEIVE

Posts a positive or negative acknowledgment depending on whether or not the message is retrieved from the queue before its time-to-be-received timer expires.

MQMSG_ACKNOWLEDGMENT_NACK_RECEIVE

Posts a negative acknowledgment when the message cannot be retrieved from the queue before the message's time-to-be-received timer expires.

MQMSG_ACKNOWLEDGMENT_NONE

The default. No acknowledgment messages (positive or negative) are posted.

Remarks

When asking for acknowledgments, you must also specify the administration queue where the acknowledgment messages will be sent.

To request acknowledgment messages, specify PROPID_M_ACKNOWLEDGE and PROPID_M_ADMIN_QUEUE in the MQMSGPROPS structure and call MQSendMessage.

To find out if an acknowledgment message was requested for a message in a queue, specify PROPID_M_ACKNOWLEDGE in the MQMSGPROPS structure. Then, call MQReceiveMessage or MQReceiveMessageByLookupId and examine its returned value. When retrieving this property, the type indicator can be set to VT_UI1 or VT_NULL. If you set the type indicator to VT_NULL, Message Queuing automatically changes the type indicator to VT_UI1 during the function call.

To receive a positive acknowledgment message when a message reaches its destination and when the message is retrieved, the following two full-acknowledgment settings must be combined using the OR operator: MQMSG_FULL_REACH_QUEUE and MQMSG_FULL_RECEIVE.

Acknowledgment messages are typically Message Queuing-generated messages, however they can also be created by connector applications when messages are to a foreign queue.

Equivalent COM Property

With COM components, the equivalent property for setting and retrieving the acknowledgment level is MSMQMessage.Ack.

For information on See
The purpose and content of acknowledgment messages Acknowledgment Messages
The type of queues used as administration queues Administration Queues
The time-to-reach-queue and time-to-be-received timers Message Timers

Example Code

The following code fragment shows how PROPID_M_ACKNOWLEDGE is specified in arrays that can be used to initialize an MQMSGPROPS structure to request a positive or negative receive acknowledgment message.

aMsgPropId[i] = PROPID_M_ACKNOWLEDGE;                     // Property ID  
aMsgPropVar[i].vt = VT_UI1;                               // Type indicator  
aMsgPropVar[i].bVal = MQMSG_ACKNOWLEDGMENT_FULL_RECEIVE;  
i++;  

The following example is included in Using Message Queuing.

For an example of See
Sending a message that requests an acknowledgment from Message Queuing C/C++ Code Example: Requesting Acknowledgment Messages

See Also

Message Properties
MQMSGPROPS
MQReceiveMessage
MQReceiveMessageByLookupId
MQSendMessage
PROPID_M_ADMIN_QUEUE
PROPID_M_TIME_TO_BE_RECEIVED
PROPID_M_TIME_TO_REACH_QUEUE