2
votes

We have a two node cluster running on Windows 2008 R2. I've installed MSMQ with the Message Queue Server and Directory Service Integration options on both nodes. I've created a clustered MSMQ resource named TESTV0Msmq (we use transactional queues so a DTC resource had been created previously).

The virtual resource resolves correctly when I ping it.

I created a small console executable in c# using the MessageQueue contructor to allow us to send basic messages (to both transactional and non transactional queues).

From the active node these paths work:

.\private$\clustertest

{machinename}\private$\clustertest

but TESTV0Msmq\private$\clustertest returns "Invalid queue path name".

According to this article: http://technet.microsoft.com/en-us/library/cc776600(WS.10).aspx

I should be able to do this?

In particular, queues can be created on a virtual server, and messages can be sent to them. Such queues are addressed using the VirtualServerName\QueueName syntax.

1

1 Answers

1
votes

Sounds like classic Clustering MSMQ problem:

Clustering MSMQ applications - rule #1

If you can access ".\private$\clustertest" or "{machinename}\private$\clustertest" from the active node then that means there is a queue called clustertest hosted by the LOCAL MSMQ queue manager. It doesn't work on the passive node because there is no queue called clustertest there yet. If you fail over the resource, it should fail.

You need to create a queue in the clustered resource instead. TESTV0Msmq\private$\clustertest fails because the queue was created on the local machine and not the virtual machine.

Cheers
John Breakwell