PROPID_M_RESP_QUEUE
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_RESP_QUEUE property specifies the queue to which application-generated response messages are returned. This property is superseded by PROPID_M_RESP_FORMAT_NAME in MSMQ 3.0.
Property ID
PROPID_M_RESP_QUEUE
Type Indicator
VT_LPWSTR
MQPROPVARIANT Field
pwszVal
Property Value
Format name of the response queue (the default is none).
Remarks
PROPID_M_RESP_QUEUE is used to send the format name of a queue to the receiving application. Typically, this is done so that the receiving application can send a response message back to the sending application.
Note
Response messages are application-defined. The sending and receiving application must define what is in the message, as well as what is to be done when the response message arrives in the response queue.
This property can also be used to send the format name of other queues. For example, when sending response messages you can set this property to the format name of the destination queue of the original message. Or you can use this property to send the format name of a local private queue (which would be inaccessible otherwise) to another application.
To set the format name of a response queue, specify PROPID_M_RESP_QUEUE in the MQMSGPROPS structure and call MQSendMessage.
To find out where to send a response message, specify PROPID_M_RESP_QUEUE and PROPID_M_RESP_QUEUE_LEN in the MQMSGPROPS structure (the length property is used to verify that the format name was sent). Then call MQReceiveMessage and examine the returned values.
If MQReceiveMessage fails, returning an MQ_ERROR_FORMATNAME_BUFFER_TOO_SMALL error, use the returned value of PROPID_M_RESP_QUEUE_LEN to reallocate the format name buffer and call MQReceiveMessage again.
Before using the returned format name, always check the length property PROPID_M_RESP_QUEUE_LEN to see if the format name was sent with the message. If the returned value of PROPID_M_RESP_QUEUE_LEN is 0, no format name was sent with the message. If the returned value is non-0, PROPID_M_RESP_QUEUE contains the format name of the queue.
Equivalent COM Property
With COM components, the equivalent property for setting and retrieving the response queue is MSMQMessage.ResponseQueueInfo.
For information on | See |
---|---|
What is in a response message | Response Messages |
The type of queues used as response queues | Response Queues |
Testing to see if a response is needed | PROPID_M_RESP_QUEUE_LEN |
Example Code
The following code fragments show how PROPID_M_RESP_QUEUE is specified in arrays that can be used to initialize an MQMSGPROPS structure for setting and retrieving the response queue format name.
To Send the Format Name
aMsgPropId[i] = PROPID_M_RESP_QUEUE; // Property ID
aMsgPropVar[i].vt = VT_LPWSTR; // Type indicator
aMsgPropVar[i].pwszVal = wszRespQueue;
i++;
To Retrieve the Format Name
ULONG ulBufferLength = 256;
WCHAR * wszRespQueueBuffer = NULL;
wszRespQueueBuffer = (WCHAR*)malloc(ulBufferLength*sizeof(WCHAR));
if (wszRespQueueBuffer == NULL)
{
return MQ_ERROR_INSUFFICIENT_RESOURCES;
}
memset(wszRespQueueBuffer, 0, ulBufferLength*sizeof(WCHAR));
aMsgPropId[i] = PROPID_M_RESP_QUEUE_LEN; // Property ID
aMsgPropVar[i].vt = VT_UI4; // Type indicator
aMsgPropVar[i].ulVal = ulBufferLength;
i++;
aMsgPropId[i] = PROPID_M_RESP_QUEUE; // Property ID
aMsgPropVar[i].vt = VT_LPWSTR; // Type indicator
aMsgPropVar[i].pwszVal = wszRespQueueBuffer; // Application-defined buffer
i++;
// Reallocate memory for the response queue format name buffer if necessary.
wszRespQueueBuffer = (WCHAR*)realloc(wszRespQueueBuffer, aMsgPropVar[0].ulVal*sizeof(WCHAR));
if (wszRespQueueBuffer == NULL)
{
return MQ_ERROR_INSUFFICIENT_RESOURCES;
}
memset(wszRespQueueBuffer, 0, aMsgPropVar[0].ulVal*sizeof(WCHAR));
aMsgPropVar[1].pwszVal = wszRespQueueBuffer; // Pointer to the new buffer
The following example is included in Using Message Queuing.
For an example of | See |
---|---|
Setting PROPID_M_RESP_QUEUE to request a response message | C/C++ Code Example: Requesting Response Messages |
See Also
Message Properties
MQMSGPROPS
MQReceiveMessage
MQSendMessage
PROPID_M_RESP_QUEUE_LEN