0

I've got a MSMQ Cluster setup with nodes (active/passive) that share a drive.

Here are the tests I'm performing. I send messages to the queue that are recoverable. I then take the MSMQ cluster group offline and then bring it online again.

Result: The messages are still there.

I then simulate failover by moving the group to node 2. Moves over successfully, but the messages aren't there.

I'm sending the messages as recoverable and the MSMQ cluster group has a drive that both nodes can access.

Anyone?

More Info:

The Quorum drive stays only on node 1.

I have two service/app groups. One MSMQ and one that is a generic service group.

Even more info:

When node 1 is active, I pump it full of messages. Failover to node 2. 0 message in the queue for 02. Then I failover back to 01, and the messages are in 01.

legion
  • 497
  • 1
  • 5
  • 15

1 Answers1

1

You haven't clustered MSMQ or aren't using clustered MSMQ properly. What you are looking at are the local MSMQ services.

http://blogs.msdn.com/b/johnbreakwell/archive/2008/02/18/clustering-msmq-applications-rule-1.aspx

Cheers John

==================================

OK, maybe the drive letter being used isn't consistently implemented.

  1. What is the storage location being used by clustered MSMQ?
  2. If you open this storage location up in Explorer from Node 1 AND Node 2 at the same time, are the folder contents exactly the same? If you create a text file via Node 1's Explorer window, does it appear after a refresh in Node 2's Explorer window?
John Breakwell
  • 4,667
  • 20
  • 25
  • That was my first thought. But then I looked at the services. The "local" MSMQ services on both nodes is not running. The cluster MSMQ service is running...depending on the active node. – legion Dec 11 '11 at 02:56
  • OK, then the clustered services are not configured to use a shared file store; if MSMQ is configured to use c:\windows\system32\msmq\storage instead of Q:\storage, for example. Node 1's C:\ is obviously not the same as Node 2's C:\ so any messages on Node 1 would only be visible to the clustered MSMQ service running on Node 1, and vice versa. – John Breakwell Dec 11 '11 at 18:18
  • Interesting...How would I confirm if it is using local vs shared storage? – legion Dec 11 '11 at 18:47
  • 2
    Unfortunately I don't have one handy but it should be in the properties of the clustered message queuing resource. Can look in registry too - local service uses locations specified here HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSMQ\Parameters and clustered service uses HKey_LOCAL_MACHINE\SOFTWARE\Microsoft\MSMQ\Clustered QMs\MSMQ$MSMQ Service\Parameters – John Breakwell Dec 11 '11 at 18:56
  • {sigh} The registry on both nodes (when active) indicates that the storage is on the shared drive. Nothing is pointing to "C:\" – legion Dec 11 '11 at 19:14
  • OK, how are you opening the queue to see if there are messages in it? Computer Management? Your app? Performance Monitor? – John Breakwell Dec 11 '11 at 19:29
  • In Cluster Snap in, and then MSMQ group, and then Manage MSMQ. – legion Dec 11 '11 at 19:55
  • I'm assuming the messages are being loaded but you can't see them - as opposed to them not being loaded in the first place. Do you get the same problem running Cluster MMC snapin on different nodes and machines? If you use performance monitor, can you see a message count for the queue? What permissions are on the queue? Can nyou create a new queue when on Node 2 and have it reappear when you failover to Node 1? – John Breakwell Dec 11 '11 at 23:04
  • No they aren't being loaded at all. I've created new queues as well to try it. – legion Dec 11 '11 at 23:37
  • If there are messages in node 1 and I failover to node 2, the messages do not appear in node 1. But if i failover back to node 1 the messages are there. Same thing with node 2, if there are messages and I failover to node 1, then messages do now show up in node 1, but if I go back over the messages are in node 2. – legion Dec 11 '11 at 23:39
  • That looks to be the issue. A TXT file created on one node does not show up on the other. Will have to figure out why it says the drives are being shared and they get the same drive letter. But for some reason they really aren't being shared. Thanks for all your help. Much appreciated. – legion Dec 17 '11 at 16:43
  • I do have this problem. I am not sure where to go. I have a clustered MSMQ and believe it is working as when there is a failover, the messages being sent get put in the queue and vica versa to the other node. no messages lost (TX). But when I have my 3 WCF servers looking at that ClusteredMSMQ, it does work until there is a failover in which case I have to restart the WCF service to pick up the messages on those servers. Any ideas how I can fix this or to configure it properly? – Ahmed ilyas May 01 '12 at 14:33