Можете ли вы объяснить, сколько оперативной памяти будет использоваться при использовании восстановимых сообщений? Я знаю, что одно сообщение потребляет приблизительно 70-80 байт, и это нормально, и я знаю, что тело сообщения будет сохранено на диске, но может ли оно также дублировать тело в ОЗУ? Я попытался протестировать это с помощью экспресс-и восстановимого сообщения (ограничение на хранение сообщений - 1gb) - и в обоих случаях, которые я вижу в обработчике процессов, этот процесс службы msmq достиг своего рабочего набора (памяти) до 1gb. Я понимаю, что в случае экспресс-сообщений это нормально, но с восстановимыми сообщениями это будет намного меньше!MSMQ с использованием вопросов
И второй вопрос касается ограничения обратного вызова MSMQ.
Если вы получаете сообщения с обратным вызовом, считайте, что каждый процесс может регистрироваться только до 63 обратных вызовов. Если ваши обратные вызовы ожидают очереди без каких-либо действий, вы можете достичь этого предела.
Это относится ко всем очередям или только к одному? Например, у меня есть процесс, и я делаю что-то вроде:
QueueFirst = new MessageQueue(@".\test") { Formatter = new BinaryMessageFormatter() };
QueueFirst.ReceiveCompleted += QueueOnReceiveCompleted;
QueueSecond = new MessageQueue(@".\test") { Formatter = new BinaryMessageFormatter() };
QueueSecond.ReceiveCompleted += QueueOnReceiveCompleted;
for (int i = 0; i < 63; i++)
{
QueueFirst.BeginReceive(TimeSpan.FromSeconds(10), "", Callback);
QueueSecond.BeginReceive(TimeSpan.FromSeconds(10), "", Callback);
}
Могу ли я это сделать? Я спрашиваю, потому что, если я устанавливаю верхний предел цикла на значение больше 63, ничего плохого не происходит. Я использую этот method overload, потому что в справке есть что-то о обратных вызовах, означает ли это, что использование обработчика событий не имеет ограничений?
Почему вы смотрите на рабочий комплект? http://getgreenshot.org/2010/07/24/a-few-words-on-memory-usage-or-working-set-vs-private-working-set/ –