Для этого вам нужно пометить сообщения как Восстанавливаемые. По умолчанию сообщения MSMQ хранятся только в памяти, но восстанавливаемые сообщения резервируются на диск для обеспечения надежного обмена сообщениями MSMQ.
using System.Messaging;
Message recoverableMessage = new Message();
recoverableMessage.Body = "Sample Recoverable Message";
recoverableMessage.Recoverable = true;
MessageQueue msgQ = new MessageQueue(@".\$private\Orders");
msgQ.Send(recoverableMessage);
Обзор этой области см. На Надежные сообщения с MSMQ и .NET .
Транзакционные сообщения не нужно вручную помечать как восстановимые - это подразумевается в том факте, что они являются частью транзакции на основе MSMQ.