MSDN Тема
Привет всем.
Прежде всего, пожалуйста, извините за любые ошибки в английском языке в следующем описании, потому что я не являюсь носителем языка, и я не могу написать это идеально.
Я пытаюсь создать службу .NET (4.0) для удаленного / транзакционного / асинхронного приема восстанавливаемых сообщений из нескольких очередей. Итак, сначала я использую метод BeginPeek, а затем метод Receive в TransactionScope (который неявно использует MSDTC).
Проблема в том, что mqsvc.exe хост-машины (win7 / 2k8r2 sp1), на которой запущен мой сервис, не выполняет ничего другого (и, конечно, ничего не связанного с приемом / хостингом сообщений, MSMQ пуст и чист). Распределение памяти mqsvc.exe увеличивается, и оно никогда не освобождает память. Все разделы реестра MSMQ об интервале очистки кэша имеют кратковременное значение (около 1 минуты).
Я пробовал несколько вариантов:
- с локальным и удаленным MSDTC (удаленным, очевидно, с хост-машиной сообщений).
- с библиотекой COM mqoa.dll вместо .NET для использования явных транзакций MSDTC для MSMQ.
- с несколькими разными машинами (все win7 / 2k8r2 sp1).
Нет никаких исключений при выполнении моего сервиса, и все ресурсы, которые я могу закрыть или / и утилизировать, закрываются / утилизируются как можно скорее. Распределение памяти моего сервиса стабильно.
Во всех случаях это одна и та же проблема. Как это решить?
Заранее спасибо.
Винсент.