Discussion:
How to install in 'domain mode' vs. 'workgroup' mode?
(too old to reply)
forestial
2007-09-20 21:04:04 UTC
Permalink
I installed MSMQ on a Win2k3 SP2 machine using the 'Add/Remove Windows
Components' 'wizard'. In the Details dialog I checked 'Active Directory
Integration' and 'Common' only. Under 'Common' there is further Details
dialog; here I checked both 'Core Functionality' and 'Local Storage'.

The machine is part of a domain but it is not a domain controller.

I am using the .NET support for MSMQ (via Powershell). When I attempt to
create a public queue I get the error 'A workgroup installation computer does
not support the operation'. I have tried several ways to specify the name
of the public queue:

.\AQueue
<nodename>\AQueue
DIRECT:OS=<nodename>\AQueue
.... all yielding the above mentioned error.

I also tried the path
FormatName:DIRECT:OS=<nodename>\AQueue
this gets an error 'Cannot create a queue with the path...'

Is there some option that I missed, to install MSMQ in 'domain mode'?

Or am I doing something wrong in path I passing to the Create() method?

(I have a similar problem with creating public queues on an XP machine. But
I was successful in Vista. There are different versions of MSMQ in play
here of course.)
Frank Boyne
2007-09-21 05:14:38 UTC
Permalink
Post by forestial
When I attempt to
create a public queue I get the error 'A workgroup installation computer does
not support the operation'.
You might try just removing your Windows Server 2003 system from your
domain and then adding it back into the domain. If you are lucky, MSMQ
will just join the domain and your problems will disappear.

"Active Directory Integration" is the only component that affects
workgroup mode versus domain mode so you should be okay so far as that's
concerned. Obviously the system has to belong to a domain before MSMQ
will run in domain mode, but your system is - so again you should be
okay.

Are your domain controllers running on Windows 2000 by any chance?
Because of some complexity to do with how various AD objects are
created, Windows 2000 based domains had to have at least one domain
controller with MSMQ installed. You don't need to actually use MSMQ on
the controller, you just need to install MSMQ so the AD database gets
updated.

MSMQ 3.0 was supposed to have relaxed this restriction, but I'm not
entirely sure that it did. The relevant KB article says "Message
Queuing on Windows XP Professional or on Windows Server 2003 can operate
as an independent client without any special requirements [i.e., no MSMQ
on the controller]" but you aren't installing MSMQ as an independent
client.
http://support.microsoft.com/kb/317329/en-us

The original rule said that the controller had to be the first system in
the domain that had MSMQ installed. After you install MSMQ on the
controller, you might have to remove your Windows Server 2003 system
from the domain and then add it back into the domain before MSMQ on that
system flips over to domain mode.
Post by forestial
I have tried several ways to specify the name
None of that will help I'm afraid. Public queues are public because
certain data about the queues are published in the Active Directory. I
think the problem you are having is that your system has MSMQ installed
in workgroup mode and so public queues per se cannot be created - no
matter how you specify the name.
Post by forestial
(I have a similar problem with creating public queues on an XP
machine. But
I was successful in Vista. There are different versions of MSMQ in play
here of course.)
That's a bit odd and may mean everything I said above is just complete
tosh. XP would be a case of MSMQ ibeing installed as an Independent
Client so no special requirements should have been needed. If your XP
system is installed in workgroup mode too, that would seem to suggest
that the controller isn't the problem.
forestial
2007-09-21 14:56:05 UTC
Permalink
Frank,

Thanks for the very good information. I don't have domain admin privileges,
so rather than looking for someone who does I tried rebooting the Win2k3
machine. Now I can create the public queue on it and successfully access that
queue from my other machines.

I still can't create a public queue on the XP box - I'll try rebooting that
when I get an opportunity.

So in summary:
- Win2k3 - had to reboot after installing MSMQ to be able to create a
public queue
- Vista - able to create public queue without any reboot after installing
- XP - still need to try the reboot

I'm still unclear on the role of the domain controller in MSMQ. I thought I
had read somewhere that by using the 'FormatName:DIRECT=OS:' thing as part of
the path, there would be no dependency on the DC.
Post by Frank Boyne
Post by forestial
When I attempt to
create a public queue I get the error 'A workgroup installation computer does
not support the operation'.
You might try just removing your Windows Server 2003 system from your
domain and then adding it back into the domain. If you are lucky, MSMQ
will just join the domain and your problems will disappear.
"Active Directory Integration" is the only component that affects
workgroup mode versus domain mode so you should be okay so far as that's
concerned. Obviously the system has to belong to a domain before MSMQ
will run in domain mode, but your system is - so again you should be
okay.
Are your domain controllers running on Windows 2000 by any chance?
Because of some complexity to do with how various AD objects are
created, Windows 2000 based domains had to have at least one domain
controller with MSMQ installed. You don't need to actually use MSMQ on
the controller, you just need to install MSMQ so the AD database gets
updated.
MSMQ 3.0 was supposed to have relaxed this restriction, but I'm not
entirely sure that it did. The relevant KB article says "Message
Queuing on Windows XP Professional or on Windows Server 2003 can operate
as an independent client without any special requirements [i.e., no MSMQ
on the controller]" but you aren't installing MSMQ as an independent
client.
http://support.microsoft.com/kb/317329/en-us
The original rule said that the controller had to be the first system in
the domain that had MSMQ installed. After you install MSMQ on the
controller, you might have to remove your Windows Server 2003 system
from the domain and then add it back into the domain before MSMQ on that
system flips over to domain mode.
Post by forestial
I have tried several ways to specify the name
None of that will help I'm afraid. Public queues are public because
certain data about the queues are published in the Active Directory. I
think the problem you are having is that your system has MSMQ installed
in workgroup mode and so public queues per se cannot be created - no
matter how you specify the name.
Post by forestial
(I have a similar problem with creating public queues on an XP machine. But
I was successful in Vista. There are different versions of MSMQ in play
here of course.)
That's a bit odd and may mean everything I said above is just complete
tosh. XP would be a case of MSMQ ibeing installed as an Independent
Client so no special requirements should have been needed. If your XP
system is installed in workgroup mode too, that would seem to suggest
that the controller isn't the problem.
Frank Boyne
2007-09-22 20:56:45 UTC
Permalink
Post by forestial
I'm still unclear on the role of the domain controller in MSMQ. I thought I
had read somewhere that by using the 'FormatName:DIRECT=OS:' thing as part of
the path, there would be no dependency on the DC.
That's correct. Direct format names can be used to access queues on
systems that are neighbours as far as the network is concerned - in
other words anything that can be communicated with directly over the
network without routing through an intermediate node. Direct format
names contain all the information necessary to locate the queue so
there's no need to communicate with the Domain Controller to translate
the queue address into useful information.

For MSMQ, the Domain Controller is used as the "Message Queuing
Information Store" (MQIS) which is used to translate path names into
format names, some format names into network addresses and to provide a
searchable database of "public" queues.

Path names are the 'human readable' version of a queue address and take
the form <computer name>\<queue name> or <computer name>\private$\<queue
name>.

Format names are the 'machine readable' version of a queue address
(although they are text so they can still be read by humans). A public
format name has the form PUBLIC=<queue guid> and a private queue has the
form PRIVATE=<computer guid>\<queue number>.

Public format names and Private format names are the internal MSMQ
representation of a path name and are how MSMQ identifies a queue so
when a program addresses a queue by means of a path name, MSMQ must
translate that path name into a Public or Private format name. To do
that MSMQ needs to translate <computer name>\<queue name> into a guid or
<computer name>\private$\<queue name> into a guid and a queue number.
The MQIS is the database used to convert a computer name into a computer
guid for a private queue or a computer name and queue name into a queue
guid for a public queue.

That's why path names, Public format names and Private format names
can't be used on systems that have MSMQ running in Workgroup mode.

Public queues can also be searched for using the lookup queue API
functions (or equivalent) to search for queues using properties like
label or class and relationships like equal, greater than, etc.

The MQIS provides the database of searchable data used by the lookup
mechanism. That's why you can only search for public queues (they are
the ones 'published' in the MQIS); can only search for queues from
systems with MQ running in domain mode (only those systems can access
the MQIS); and can only create public queues on systems running MSMQ in
domain mode (again only those systems can access the MQIS so only those
systems can publish data about the public queue).

Loading...