Clustered MSMQ - Invalid queue path name when sending
Asked Answered
D

1

2

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.

Digitoxin answered 18/8, 2011 at 23:11 Comment(0)
B
1

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

Berriman answered 19/8, 2011 at 8:45 Comment(5)
Assuming you're the same John Breakwell who answers 94% of the MSMQ related issues I've waded through on the www in the last 48 hours, I'm sure you're correct. I think there is a configuration issue with the clustered virtual server. After opening the server configuration using mmvc.exe I don't see MSMQ listed under Applications and Services. And i noticed that the MSMQ service on the active node still has a start mode of automatic which I didn't expect from what I've read. Will wade some more....Digitoxin
Hokay. So somebody shoot me. As John suggested, I was looking at the passive node. Now I can write to a clustered queue from the active node. I just need to sort why I can't write to either clustered or non clustered from remote machines in the domain.Digitoxin
If you can write to the queue from outside the cluster and the outgoing queue connects, it's most likely a permissions issue. If the outgoing queue cannot connect then it's most likely a DNS issue.Berriman
Yup. Sure. Security it was. From my perspective it became clear-ish once I enabled end to end tracing, although it'd be nice to have some errors in the event log rather than having to guess. The clustered private queue's were originally created while logged in as the local system administrator. I logged in as a domain admin and recretaed the queue's. I can now read and write using the clustered queue locally and remotely. ThanksDigitoxin
No, event log would get swamped with message errors; event log should be for service events. Problems with messages can be easily tracked with negative source journaling and dead letter queues.Berriman

© 2022 - 2024 — McMap. All rights reserved.