MSMQ Disaster Recovery

disaster-recoverymsmq

I'm looking into utilizing MSMQ in our enterprise applications. The one area I haven't been able to find information on is with disaster-recovery.

Scenario

A fire has broken out in the server room. All the equipment has been destroyed and we need to run the operations out of a backup site several miles away.

With SQL server, we have replication enabled which provides a stand-by copy of the operation database at the backup site. In the event of disaster, we can switch over to the stand-by site and continue with an up-to-date database.

With MSMQ, I would like to know how I can achieve the same style of replication, so that if the server a queue is hosted on suddenly ceases to exist, we should be able to switch to a stand-by queue which contains the same unprocessed messages.

Can this be achieved? If MSMQ can't easily manage this, is it possible to do something at the storage level?

Best Answer

There's nothing in MSMQ which will do this automatically. You've got a couple of options.

  1. Build a geographically distributed cluster using storage replication on your SAN to replicate between the two sites. Setup MSMQ as a clustered resource (which is supported).
  2. Use something like double take to replicate the MSMQ folder to a server at the second site. Make sure that MSMQ on the second server is configured to look at the correct folder, and that the MSMQ service on the backup server is disabled.

Make sure that the queue is setup to allow the messages to be read into the queue and not purged after restart of the MSMQ service.

Related Topic