BUG: Message Problems with MSMQ Connector Processing (182121)



The information in this article applies to:

  • Microsoft Message Queue Server (MSMQ) 1.0

This article was previously published under Q182121

SYMPTOMS

After a restart of the Microsoft Message Queue Server (MSMQ) Queue Manager on a computer with a connector service, any of the following may occur:

  • The connector may not see the messages that were left in the queue.
  • The connector may not be able to read the messages in the queue, even though they appear in Windows NT Performance Monitor.
  • The connector receives messages out of order.

CAUSE

The first problem described above occurs when the messages are not in the connector queue after Queue Manager initialization. The messages are returned to the temporary queue and moved back to the connector queue. The recovery process may take a significant amount of time to determine the connector queue and place the messages there, so that they can be read by the application.

The second problem described above occurs if, after recovery, the message cannot be read from the connector queue. The message can be seen in the performance counter, but when the application tries to read it, it stops responding. This is because Transactional messages are stored in two steps. The first step is to store the message on the disk and update the logger. The second step allows the application to read the message. There is a problem in the logic of the first step that prevents the second step from happening.

In the third case described above, you should understand that, during recovery, the messages are ordered according to the packet allocation time. For the connector, it is possible for packets to be out of order chronologically.

STATUS

Microsoft has confirmed this to be a problem in Microsoft Message Queue Server version 1.0. A supported fix is now available, but has not been fully regression- tested and should be applied only to systems experiencing this specific problem. Unless you are severely impacted by this specific problem, Microsoft recommends that you wait for the next Service Pack that contains this fix. Contact Microsoft Technical Support for more information.

MORE INFORMATION

After obtaining the hotfix from Microsoft Technical Support, perform the following steps to install it:

  1. Copy I0267.exe (for computers with an Intel processor) or A0267.exe (for computers with an Alpha processor) to an empty directory and then run it. The Readme.txt file contains these instructions, as well as descriptions of the problems corrected by the hotfix.

    Hotfix files

    Mqqm.dll
    Readme.txt

  2. Stop any applications that depend on the Microsoft Message Queue service.
  3. To install the hotfix, you must stop the Microsoft Message Queue service. To do this, do either one of the following, depending on whether your computer is clustered:
    • On a computer running Microsoft Cluster Server, use Cluster Administrator to take the Microsoft Message Queue resource offline.
    • On a non-clustered computer, open Control Panel Services and stop the Microsoft Message Queue service.


  4. Copy or rename the Mqqm.dll file in the %windir%\System32 directory, so you can restore it if there are problems with the hotfix on your computer.
  5. Copy the Mqqm.dll file that was generated from the hotfix (in step 1 of this procedure) to the %windir%\System32 directory.
  6. Restart the Microsoft Message Queue Service, using either of the following methods (depending on whether your computer is clustered):
    • On a computer running Microsoft Cluster Server, use Cluster Administrator to bring the Microsoft Message Queue resource online.
    • On a non-clustered computer, open Control Panel Services and start the Microsoft Message Queue service.


  7. Restart any applications that depend on the Microsoft Message Queue service (that you had stopped in step 2 of this procedure).

WORKAROUND

To work around these problems, obtain the hotfix mentioned in the STATUS section of this article. With the hotfix installed, MSMQ returns the message directly to the connector queue during recovery. To properly track this, a field was added to the end of the packet containing the GUID of the destination connector queue.

If the Foreign Connection Network (CN) is deleted (the connector queue is no longer valid), MSMQ identifies this case during the validation process. In such a case, MSMQ closes the queue and deletes all the messages. However, MSMQ does not send any negative acknowledgment (nack), because the connector queue is marked as a temporary queue in the driver. The sender will receive Time To Reach Queue expiration nack.

Modification Type:MinorLast Reviewed:9/22/2005
Keywords:kbHotfixServer kbQFE kbbug kbfix KB182121