(Introduced in MSMQ 3.0.) The PROPID_Q_MULTICAST_ADDRESS property specifies the IP multicast address associated with the queue.
VT_LPWSTR or VT_EMPTY
When the type indicator is set to VT_LPWSTR, the property value is a string containing a valid multicast address (in the form shown below).
The address must be in the class D range from 220.127.116.11 to 18.104.22.168. However, only certain ranges of addresses in this range are unreserved and available for sending multicast messages. For the latest list of reserved multicast addresses, see the Internet Assigned Number Authority (IANA) Internet Multicast Addresses Web page. There are no restrictions on the port number.
When the type indicator is set to VT_EMPTY, the property value is meaningless and the queue is not associated with a multicast address.
The PROPID_Q_MULTICAST_ADDRESS property is used to associate a nontransactional queue with a multicast address that can be used when sending messages. You cannot associate a transactional queue with a multicast address. When the sending application sends messages to a multicast address, Message Queuing sends a copy of the message to every queue associated with that address.
|If several source computers are sending multicast messages and you want a specific queue to receive messages from only one source computer, each source computer must send messages to a different combination of IP address and port number.|
A queue can be associated with a multicast address when the queue is created or, after the queue has been created, with a call to MQSetQueueProperties.
To disassociate an existing queue from a multicast address set the type indicator of PROPID_Q_MULTICAST_ADDRESS to VT_EMPTY and call MQSetQueueProperties.
To retrieve the multicast address with which a queue is associated, specify PROPID_Q_MULTICAST_ADDRESS in the MQQUEUEPROPS structure, call MQGetQueueProperties, and examine its returned value.
When retrieving the multicast address, the type indicator must be set to VT_NULL. Message Queuing automatically allocates memory for the wide-character string retrieved during the function call. After you no longer need the string, you must free the memory allocated for it using MQFreeMemory.
For more information on sending messages to multiple queues using multicast addresses, see Multiple Destinations: Multicast addresses.
Equivalent COM Property
When using COM components, the multicast address associated with the queue can be set or retrieved using the MSMQQueueInfo.MulticastAddress property.
The following code fragments show how PROPID_Q_MULTICAST_ADDRESS is specified in arrays that can be used to initialize an MQQUEUEPROPS structure when you specify a multicast address, disassociate a queue from a multicast address, and retrieve the multicast address associated with the queue.
To Specify a Multicast Address
WCHAR AddressBuffer=L"22.214.171.124:80"; aQueuePropId[i] = PROPID_Q_MULTICAST_ADDRESS; // Property ID aQueuePropVar[i].vt = VT_LPWSTR; // Type indicator aQueuePropVar[i].pwszVal = &AddressBuffer; // Multicast address i++;
To Disassociate a Queue from a Multicast Address
aQueuePropId[i] = PROPID_Q_MULTICAST_ADDRESS; // Property ID aQueuePropVar[i].vt = VT_EMPTY; // Type indicator i++;
To Retrieve PROPID_Q_MULTICAST_ADDRESS
aQueuePropId[i] = PROPID_Q_MULTICAST_ADDRESS; // Property ID aQueuePropVar[i].vt = VT_NULL; // Type indicator i++;
The following examples are included in Using Message Queuing.
|For an example of||See|
Sending messages to multiple destinations using multicast addresses
Setting and retrieving the multicast address associated with an existing queue