0xC00E006A - Queued Components and MSMQ

If you are trying to get a queued component working and see an event like:

Event Type:        Error
Event Source:    COM+
Event Category:                (104)
Event ID:              4811
Date:                     19/05/2007
Time:                     11:12:13
User:                     N/A
Computer:          COMSERVER1
Description:

Server Application ID: {some GUID}
Server Application Instance ID: {some other GUID}
Server Application Name: Your_application_name
The serious nature of this error has caused the process to terminate.
Error Code = 0xc00e006a :
COM+ Services Internals Information:
File: d:\nt\com\complus\src\comsvcs\qc\listener\listener2.cpp, Line: 532
Comsvcs.dll file version: ENU 2001.12.4720.3959 shp

or you are trying to create your queued component class on the client (via the queue:/new: moniker) but BindToMoniker fails with 0xC00E006A (MQ_ERROR_UNSUPPORTED_OPERATION - The operation is not supported for a WORKGROUP installation computer).

The cause is the difference between how MSMQ is configured on the server and the client. Assuming the Queued COM+ Application was installed on a server where MSMQ was in "Active Directory Integrated Mode" then it uses public queues. If the client machine has MSMQ installed in "Workgroup Mode" then it can only use private queues. This error is expected when trying to make use of a public queue from a client in "Workgroup Mode".

One workaround is to reconfigure the Queued COM+ Application to use a private queue:

  1. Change the MSMQ installation to "workgroup mode" on the server. To do this on windows 2003, uncheck the "Active Directory Integration" option under "Application Server | Message Queuing" in the Add/Remove Windows Components dialogue. 
  2. Restart the COM+ system application. To do this on Windows XP/Windows 2003, run "net stop comsysapp".
  3. Delete the existing MSMQ queues for the QC application. 
  4. Uncheck the "Queued" option for the COM+ application, click apply.
  5. Check the "Queued" option for the COM+ application, click apply.
    Now the queues will be recreated and this time the main queue will be private.
  6. Re-export the application proxy .msi file, and reinstall this on the client.
    Now the client knows it should send messages to the PRIVATE queue.
  7. If you want, you can now add back the "Active Directory Integration" option on the server.

Another workaround would be to set the client to run MSMQ in "Active Directory Integrated Mode" (essentially the reverse of step 1)

[[Thanks to Todd Foust]]