INFO: What Happens When a COM+ Queued Component Queue Is Deleted (257317)



The information in this article applies to:

  • Microsoft COM+ 1.0, when used with:
    • the operating system: Microsoft Windows 2000
    • the operating system: Microsoft Windows XP
  • Microsoft COM+ 1.5, when used with:
    • the operating system: Microsoft Windows 2000
    • the operating system: Microsoft Windows XP

This article was previously published under Q257317

SUMMARY

If a COM+ Queued Component (QC) Queue is deleted, any messages that are unprocessed and still in the queue at the time of deletion are placed in the transactional dead-letter message queue.

If a client sends messages to the queue after it has been deleted, those messages are also placed in the transactional dead-letter message queue, and the client does not receive any error messages. However, the following event appears in the event log:

Microsoft Windows 2000
An unexpected error was returned by the MSMQ API function indicated. The following error message was retrieved from MSMQ.
MQSendMessage : The queue does not exist, or you do not have sufficient permissions to perform the operation.

Server Application ID: {B1987A2C-CF38-4A18-88A0-2B6DB430AB2E}
Server Application Name: Harness
Error Code = 0xc00e0003 :
COM+ Services Internals Information:
File: .\channelmanager.cpp, Line: 388
Microsoft Windows XP
Event Type: Error
Event Source: COM+
Event Category: (115)
Event ID: 4808
Description: An unexpected error was returned by the Message Queuing API MQOpenQueue : The queue does not exist, or you do not have sufficient permissions to perform the operation.

Server Application ID: {D6F05FD1-10D1-4C51-9A58-7FD8B75E3BBD}
Server Application Instance ID: {3A3BA550-4890-45EE-A07D-03AA28447F24}
Server Application Name: QCShipApp
Error Code = 0xc00e0003 :
COM+ Services Internals Information:
File: d:\nt\com\com1x\src\comsvcs\qc\msmqrt\msmqrt.cpp, Line: 328
Comsvcs.dll file version: ENU 2001.12.4414.42 shp

MORE INFORMATION

Steps to Reproduce Behavior

  1. Create a simple COM+ component that takes a String as a parameter.
  2. Install this Component into a COM+ Server application.
  3. In the COM+ Server application properties, mark the component and the interface on the component as queued.

    NOTE: Do not select Listen for the application properties.
  4. Create a client that will create the queued component, and call the simple method.
  5. Run the client application, and call the method repeatedly.
  6. In the MSMQ viewer, look at the messages for the queued component. Note that they are still waiting to be processed.
  7. Delete this queue. Note that all of the messages are transferred to the transactional dead-letter queue.
  8. Run the client again, and send many messages. Note that no errors are returned to the client and that all of the messages are transferred to the transactional dead-letter message queue.

REFERENCES

For more information about queued components, see the following Microsoft Web site: For additional information, click the article number below to view the article in the Microsoft Knowledge Base:

246825 HOWTO: Configure a COM+ Application for Queued Components


Modification Type:MajorLast Reviewed:5/28/2003
Keywords:kbComPlusQC kberrmsg kbinfo KB257317