"Недостаточно ресурсов для выполнения операции."MSMQ, когда транзакция содержит несколько сообщений - PullRequest
8 голосов
/ 16 марта 2011

Я перемещаю приложение с одного сервера на другой, и новый сервер возвращает «знаменитый» - «Недостаточно ресурсов для выполнения операции». сообщение, когда код пытается отправить несколько сообщений в очередь, процесс обернут внутри транзакции (TransactionScope). Старый сервер выполняет код правильно, и все сообщения (приблизительно 150) отправляются в очередь, как и ожидалось, но новый сервер завершается с ошибкой около 27 *.

Теперь размер сообщения небольшой, а количество сообщений в очереди равно нулю.

Я прочитал ' Недостаточно ресурсов? Убегайте, убегайте! 'статья, но я не уверен, как изменить машинные квоты для MSMQ.

Журнал приложения содержит следующую запись:

System.Messaging.MessageQueueException (0x80004005): недостаточно ресурсов для выполнения операции.

Технология C # и .Net 4.0, сервер win 2003 R2 SP2

Есть идеи, почему я это понимаю?

Ответы [ 3 ]

8 голосов
/ 16 марта 2011

Одно сообщение превысило лимит 4 Мб - после сортировки все работало как положено.

4 голосов
/ 04 февраля 2014

Просто добавьте к выпуску номер 7 место для хранения и ответ Митча.

Размер вашей квоты - это физический размер на диске, а не размер сообщения в очереди (как сообщается в приложениях, таких как QueueExplorer или монитор производительности).

Таким образом, даже если вы очистили свою очередь, вы на самом деле не удалили их с диска (ее нужно очищать каждые шесть часов) -

Расположение по умолчанию: C: \ Windows \ System32 \ msmq \ storage, или получите его по 1-й ссылке в ответе Митча.

Для очистки вы не можете просто удалить файлы.

Попробуйте приведенный ниже скрипт (сохраните как myScript.vbs). Запустите это как администратор из командной строки, используя:

cscript myScript.vbs

Option Explicit

Dim mqa
set mqa = WScript.CreateObject("MSMQ.MSMQApplication")

WScript.Echo "Bytes in all queues: " + CStr(mqa.BytesInAllQueues)

mqa.Tidy

WScript.Echo "MSMQ cleaned up"

После этого наши файлы сократились с 1 ГБ до примерно 50 МБ, хотя количество байтов в очередях составило 40 МБ.

кредит в потоке: https://groups.google.com/forum/#!topic/microsoft.public.msmq.performance/jByfXUwXFw8

...