Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

MSMQ Message Replication

475 views
Skip to first unread message

Mike Monagle

unread,
May 29, 2003, 10:29:42 PM5/29/03
to
Hi,

I need to set up two MSMQ machines such that a second machine maintains a
copy of the messages in the first machine's queues so that it can act as a
backup in the event of failure of the first machine.

Due to circumstances beyond my control, the use of Microsoft Cluster Service
is not an option for me.

Any ideas?

Thanks,

Mike


Frank Boyne

unread,
May 30, 2003, 3:14:11 AM5/30/03
to
"Mike Monagle" <mi...@monagle.nospam.com> wrote in message
news:bb6fmm$7...@dispatch.concentric.net...

> I need to set up two MSMQ machines such that a second machine
maintains a
> copy of the messages in the first machine's queues so that it can act
as a
> backup in the event of failure of the first machine.

You can't really achieve what you describe using only MSMQ, I think
you'll need to write some code.

The MSMQ feature that comes close to what you want is Journalling.
There are two kinds of Journalling - Message Journalling and Queue
Journalling.

Message Journalling, controlled by the MSMQMessage.Journal property (aka
PROPID_M_JOURNAL) keeps a copy of the message on each system the message
passes through, either copies of all messages, copies of failed messages
or copies of successful messages. These messages pile up in the
computer's Journal and DeadLetter queues. A successful message might
appear in several computer's journal queues if it passed through those
computers. It might also appear in some Journal queues as a success
before finally failing at some system. Obviously much of this is
influenced by your actual network architecture, but collecting these
journalled messages into one spot could be a pain.

Queue Journalling, controlled by MSMQQueueInfo.Journal
(PROPID_Q_JOURNAL) can be used to take a copy of each message removed
from a queue. Two drawbacks - it only journals messages when they are
taken out of the queue, by which time you probably don't need the backup
and the Journal is on the same system as the original queue so if the
system crashes then the backup queue is inaccessible also.

If you can use MSMQ 3.0 (XP and Server 2003) you could use the multiple
destination features of MSMQ 3.0 to send messages to multiple queues
with one send (MSMQMessage.Destination/PROPID_M_DEST_FORMAT_NAME and
MSMQQueueInfo.MultiCastAddress/PROPID_Q_MULTICAST_ADDRESS). If you need
to support MSMQ 1.0 and 2.0 you could code your application to perform
two sends per message one to the real destination and one to the backup.


0 new messages