MSMQ-MQSeries Bridge Places MQSeries Messages in Bridge Dead Letter Queue If You Do Not Define ReplyToQ (321048)



The information in this article applies to:

  • MSMQ - MQSeries Bridge

This article was previously published under Q321048

SYMPTOMS

MSMQ-MQSeries Bridge places MQSeries messages in the Bridge Dead Letter queue if the queue name that is derived from the MQSeries message descriptor (MQMD.ReplyToQ and MQMD.ReplyToqMgr) is not defined in the MSMQ enterprise where the Bridge is installed.

CAUSE

When the Bridge translates an MQSeries message that is sent to an MSMQ queue, the MQSeries message descriptor fields, MQMD.ReplyToQ and MQMD.ReplyToQMgr, are translated into an MSMQ queue name and placed in the MSMQ properties, PROPID_M_ADMIN_QUEUE and PROPID_M_RESP_QUEUE. During the translation process, the Bridge verifies that the queue exists in the MSMQ enterprise. If the queue does not exist, the message is placed in the Bridge Dead Letter queue.

The application in MQSeries fills these fields. There are many reasons why this queue does not exist and why the application may still be able to use this queue, including:
  • The application may be sending response messages directly with MQSeries.
  • The application may use direct format sends to send the response message to a queue in a different MSMQ enterprise.
  • You can use the response queue only on MQSeries computers.

RESOLUTION

A supported fix is now available from Microsoft, but it is only intended to correct the problem that is described in this article. Apply it only to computers that are experiencing this specific problem. This fix may receive additional testing. Therefore, if you are not severely affected by this problem, Microsoft recommends that you wait for the next Microsoft Host Integration Server 2000 service pack that contains this hotfix.

To resolve this problem immediately, contact Microsoft Product Support Services to obtain the fix. For a complete list of Microsoft Product Support Services phone numbers and information about support costs, visit the following Microsoft Web site:NOTE: In special cases, charges that are ordinarily incurred for support calls may be canceled if a Microsoft Support Professional determines that a specific update will resolve your problem. The typical support costs will apply to additional support questions and issues that do not qualify for the specific update in question.

The English version of this fix should have the following file attributes or later:
   Date         Time   Version      Size     File name
   ---------------------------------------------------
   14-Apr-2002  12:55  5.64.0.842   889,104  Q2qgw.exe
				

STATUS

Microsoft has confirmed that this is a problem in the Microsoft products that are listed at the beginning of this article.

MORE INFORMATION

This fix adds a registry entry to control the disposition of the message. This fix also adds extended information to the MSMQ Label property to help you determine the cause of the problem.

This fix enhances the functionality of the Bridge in two ways:
  • If you apply only this fix, the Bridge sends messages with queue names that are not valid to the Bridge Dead Letter queue but adds a prefix to the PROPID_M_LABEL property to indicate the error.

    The prefix is in the following format:

    XLATE:HRESULT:MQMD.REPLYTOQ

    where HRESULT is the actual error HRESULT that is returned in the Bridge translation calls. For example, an HRESULT of C00E0003 is "Queue not found," and an HRESULT of C00E0014 is "Illegal queue pathname." Any other error also causes the pipe from MQSeries to MSMQ to be stopped, and errors are logged in the application event log.
  • With the new registry value, the Bridge can ignore queue names that are not valid. This fix adds the following registry value:

    HKEY_LOCAL_MACHINE\Software\Microsoft\MQBridge\Server\IgnoreReplyResolution

    This registry value is of type REG_DWORD with the following options:

    • 0x1 ignores the error when neither COA nor COD is requested.
    • 0x2 ignores the error when either COA or COD is requested.
    • 0x3 ignores the error regardless of COA or COD.
    NOTE: COA and COD are MQSeries report options for Confirm on Arrival (COA) and Confirm on Delivery (COD). These report options correspond to the MSMQ acknowledgement values of MQMSG_ACKNOWLEDGMENT_FULL_REACH_QUEUE and MQMSG_ACKNOWLEDGMENT_FULL_RECEIVE respectively.
If the ReplyToQ translation of a message returns either C00E0003 or C00E0014, the message is sent to the correct queue but with no format name in either PROPID_M_RESP_Q or PROPID_M_ADMIN_Q. Applications that send a reply message by using the response queue information must access the MSMQ Extension Property application programming interface (API) and retrieve the original queue name from MQMD.ReplyToQMgr and MQMD.ReplyToQ. Applications should make sure that this queue can be reached because messages that are sent to non-existent queues and computers that cannot be reached will accumulate in an outgoing queue for that MSMQ service.

NOTE: If messages accumulate beyond the quota for the computer, that computer cannot accept new messages. Large amounts of message data can severely impact the time that it takes for the MSMQ service to initialize. You may also experience other adverse effects with large amounts of message data, including performance degradation.

Modification Type:MinorLast Reviewed:10/6/2005
Keywords:kbbug kbfix kbQFE KB321048