Visual Basic Code Example: Requesting Response Messages

This example provides a Sub procedure that requests response messages based on a given response queue. This procedure sets the MSMQMessage.ResponseDestination property of the message, and then sends the message to a known destination queue.

For information on responding to sent messages, see Response Messages.

This example uses the MSMQMessage.ResponseDestination property (introduced in MSMQ 3.0) to specify the response queue. MSMQMessage.ResponseDestination accepts an MSMQDestination object that can reference the following format name types.

  • A single public, private, or direct format name. These format names are used to specify a single response queue.

    For information about these format names, see Public Format Names, Private Format Names, and Direct Format Names.

  • A multiple-element format name. This format name is used to specify multiple response queues.

    For information about multiple-element format names, see Multiple-Element Format Names.

  • A distribution list format name. This format name is used to specify multiple response queues.

    For information about distribution list format names, see Distribution List Format Names.

  • A multicast address format name. This format name is used to specify multiple response queues.

    For information about multicast address format names, see Multicast Address Format Names.

To request response messages

  1. Declare the objects needed to send the message that requests tracing. This procedure declares the following objects.

    Two MSMQDestination objects (for the destination queue and the response queue)

    MSMQMessage (for a message that requests response messages)

  2. Generate a direct format name for the destination queue and the response queue using the computer and queue names supplied by the caller.

  3. Set the MSMQDestination.FormatName property for the destination and response queue objects.

  4. Set the MSMQMessage.ResponseDestination property using the response queue destination object.

  5. Optional. Set additional message properties. This procedure sets the MSMQMessage.Label property of the message to "Test Message: Response".

  6. Call MSMQMessage.Send to send a copy of the message to the destination queue referenced by the format name. Note that when using an MSMQDestination object, Message Queuing implicitly opens the destination queue with send access and then closes the destination queue when the object is released.

Code Example

The following code example requires MSMQ 3.0.

Sub RequestResponse( _
                    strComputerName As String, _
                    strDestQueueName As String, _
                    strRespQueueName As String _
  Dim destOrig As New MSMQDestination
  Dim destResp As New MSMQDestination
  Dim msg As New MSMQMessage
  ' Create format names of the destination and response queues.
  strDestFormatName = "DIRECT=OS:" & strComputerName & "\" & strDestQueueName
  strRespFormatName = "DIRECT=OS:" & strComputerName & "\" & strRespQueueName
  ' Set format name of MSMQDestination object for destination
  ' queue and response queue.
  On Error GoTo ErrorHandler
  destOrig.FormatName = strDestFormatName
  destResp.FormatName = strRespFormatName
  ' Set MSMQMessage.ResponseDestination to specify the response queue.
  Set msg.ResponseDestination = destResp
  ' Set other message properties.
  msg.Label = "Test Message: Response"

  ' Send the message.
  msg.Send DestinationQueue:=destOrig
  Exit Sub
  MsgBox "Error " + Hex(Err.Number) + " was returned." _
         + Chr(13) + Err.Description
End Sub
© 2014 Microsoft