Microsoft KB Archive/257317

= INFO: What Happens When a COM+ Queued Component Queue Is Deleted =

Article ID: 257317

Article Last Modified on 5/28/2003

-

APPLIES TO

 Microsoft COM+ 1.0, when used with:  Microsoft Windows 2000 Standard Edition

 Microsoft Windows XP Professional  Microsoft COM+ 1.5, when used with:  Microsoft Windows 2000 Standard Edition

 Microsoft Windows XP Professional</li></ul> </li></ul>

-

<div class="notice_section">

This article was previously published under Q257317

<div class="summary_section">

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

<div class="moreinformation_section">

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.
 * 1) Create a client that will create the queued component, and call the simple method.
 * 2) Run the client application, and call the method repeatedly.
 * 3) In the MSMQ viewer, look at the messages for the queued component. Note that they are still waiting to be processed.
 * 4) Delete this queue. Note that all of the messages are transferred to the transactional dead-letter queue.
 * 5) 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.

<div class="references_section">