Microsoft KB Archive/936501

= A Message Queuing client that is running a version of Windows that is earlier than Windows Vista cannot send a message to a Message Queuing 4.0 server =

Article ID: 936501

Article Last Modified on 6/28/2007

-

APPLIES TO


 * Microsoft Message Queuing 3.0

-



Notice


Beta Information
This article discusses a beta release of a Microsoft product. The information in this article is provided as-is and is subject to change without notice.

No formal product support is available from Microsoft for this beta product. For information about how to obtain support for a beta release, see the documentation that is included with the beta product files, or check the Web location where you downloaded the release.



SYMPTOMS
Consider the following scenario:
 * A Microsoft Message Queuing client is running a version of Windows that is earlier than Windows Vista.
 * The Message Queuing client tries to send a message to a Message Queuing 4.0 server.
 * The size of the message that the Message Queuing client tries to send is about 4 megabytes (MB).

In this scenario, you may experience one of the following symptoms.

Symptom 1
If the Message Queuing 4.0 server is running Windows Vista, the message becomes stuck in the outgoing queue of the Message Queuing client. Additionally, the Message Queuing client continues to try to send the message until the message expiration threshold is reached.

Symptom 2
If the Message Queuing 4.0 server is running Windows Vista with a service pack or is running Windows Server Code Name &quot;Longhorn,&quot; the Message Queuing 4.0 server does not receive the message. Additionally, the Message Queuing 4.0 server sends a control message to the Message Queuing client. The control message indicates that the message cannot be received and that the message should be deleted from the outgoing queue of the Message Queuing client.



CAUSE
This problem occurs because the Message Queuing 4.0 server cannot allocate sufficient memory for the message that the Message Queuing client tries to send.

The Message Queuing 4.0 server adds two new message headers. One of these headers accommodates the subqueue information, and the other header accommodates the Internet Protocol version 6 (IPv6) information. The memory that is allocated for the header part of the message on the Message Queuing 4.0 server is slightly larger than the memory that is allocated for the header part of the message on the Message Queuing client. Therefore, the message that the Message Queuing client can create can have a slightly larger payload part than the message that the Message Queuing 4.0 server can create.

If the total size of the message on the Message Queuing client equals the maximum message size of 4 MB, the Message Queuing 4.0 server cannot allocate sufficient memory for the message. This is true because the Message Queuing 4.0 server requires more memory for the header part of the message than does the Message Queuing client.

Note To calculate the total size of the message, use the following formula:

Total message size = size of payload part + size of header part



RESOLUTION
To resolve this problem, reduce the total size of the message that is sent from the Message Queuing client to the Message Queuing 4.0 server.

Note You should reduce the size of the message to no larger than 4,028 kilobytes (KB).



MORE INFORMATION
To determine whether the total size of the message exceeds the maximum message size of 4 MB, follow these steps:  Ask for a negative acknowledgement (NACK) message to be sent from the Message Queuing client to the Message Queuing 4.0 server.

Note For information about how to request a NACK message, visit the following Microsoft Developer Network (MSDN) Web site:

http://msdn2.microsoft.com/en-us/library/14701fyc.aspx

 If the cause of the NACK message that you receive is listed as unknown in the Computer Management Microsoft Management Console (MMC) snap-in, programmatically extract the class of the NACK message. To do this, follow these steps:  Determine the Lookup ID value of the NACK message. To do this, follow these steps:  Click Start, right-click Computer, and then click Manage. If you are prompted for an administrator password, type the password. If you are prompted for confirmation, click Continue. In Computer Management, click Services and Applications.</li> Expand Message Queuing, right-click the NACK message, and then click Properties.</li> On the General tab, notice the value in the Lookup ID field.</li></ol> </li>  Retrieve the PROPID_M_CLASS property of the message. To do this, run the following script on the Message Queuing client. Option Explicit Dim lookup_Id Dim strFormatName Dim objInfo Dim objMsg Dim objQ

lookup_Id = &quot;<Lookup_ID_Value>&quot; 'Insert the actual message Lookup ID value here.

strFormatName = &quot;<Administration_queue_path>&quot; 'Insert the path of the Administration queue here.

Set objInfo = CreateObject(&quot;MSMQ.MSMQQueueInfo&quot;) Set objMsg = CreateObject(&quot;MSMQ.MSMQMessage&quot;) objInfo.FormatName = strFormatName Set objQ = objInfo.Open(1,0) 'MQ_RECEIVE_ACCESS,MQ_DENY_NONE Set objMsg = objQ.PeekByLookupId(lookup_Id) msgbox &quot;The Message Class is &quot; & objMsg.MsgClass </li></ol> </li></ol>

If the PROPID_M_CLASS property of the NACK message is MQMSG_CLASS_NACK_MESSAGE_TOO_LARGE (32781 or hex 800D), the total message size exceeds the maximum message size of 4 MB.

Additional query words: MSMQ

Keywords: kbexpertiseinter kbtshoot kbprb KB936501

-

[mailto:TECHNET@MICROSOFT.COM Send feedback to Microsoft]

© Microsoft Corporation. All rights reserved.