Может ли MSMQueue сохранить свое значение при перезагрузке Windows? - PullRequest
4 голосов
/ 24 февраля 2012

У меня есть существующая система, и мне интересно, может ли MSMQueue сохранить значение очереди, если она перезапустится.Он очищает значение при перезагрузке.

Ответы [ 3 ]

8 голосов
/ 24 февраля 2012

Как пишет paxdiablo, MSMQ - это постоянное решение для очередей, но не по умолчанию! По умолчанию сообщения хранятся в оперативной памяти и MSMQ сохраняет сообщения на диске, чтобы они не терялись в случае сбоя сервера. Вы должны указать это в КАЖДОМ сообщении.

Подробнее об этом можно узнать, если взглянуть на свойство Message.Recoverable .

8 голосов
/ 24 февраля 2012

Как уже сказал @ Kjell-Åke Gafvelin, вы можете настроить каждое сообщение , но ИМХО более удобным способом было бы установить его в самой очереди : Reliable Обмен сообщениями с MSMQ и .NET

MessageQueue msgQ = new MessageQueue(@".\private$\Orders");
msgQ.DefaultPropertiesToSend.Recoverable = true;
msgQ.Send("This message will be marked as Recoverable");
msgQ.Close();

Из статьи выше (выделено мной):

По по умолчанию , MSMQ сохраняет некоторые сообщения в памяти для увеличения производительность, и сообщение может быть отправлено и получено из очереди без записи на диск .

Кроме того, вы должны сделать очередь транзакционной , чтобы гарантировать правильную отправку и получение сообщения.

0 голосов
/ 24 февраля 2012

Да, MSMQ является постоянным решением для очередей. Он надежно хранит сообщения в резервном хранилище, которые не будут затронуты потерей питания (если, конечно, вы не столкнетесь с такими вещами, как разрыв диска, разумеется, по-настоящему мощным скачком напряжения).

Весь смысл в том, чтобы обеспечить надежную очередь сообщений в потенциально ненадежной среде. С этой целью потеря сообщений при выходе из строя определенного сервера будет существенным недостатком.

С Страницы Microsoft (и извинения за язык, похожий на коммерческий):

Приложения очереди сообщений могут использовать инфраструктуру очереди сообщений для связи через разнородные сети и с компьютерами, которые могут быть отключены. Служба очереди сообщений обеспечивает гарантированную доставку сообщений , эффективную маршрутизацию, безопасность, поддержку транзакций и обмен сообщениями на основе приоритетов.

...