Могут ли сообщения в очереди MSMQ пережить перезапуск службы/сервера? Я имею в виду, что, если в очереди есть сообщения, и сервер будет испытывать жесткий перезапуск, будут ли сообщения по-прежнему доступны в очереди после перезапуска?
MSMQ - может ли очередь выдержать перезагрузку очереди/перезапуск сервера
Ответ 1
Для этого вы должны пометить сообщения как Восстановимые. По умолчанию сообщения 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.