问题描述
|
MSDN线程
大家好。
首先,请在下面的描述中原谅任何英语错误,因为我不是母语人士,而且我写得并不完美。
我正在尝试创建一个.NET(4.0)服务,用于从多个队列中远程/事务/异步接收可恢复消息。因此,首先,我在TransactionScope中使用BeginPeek方法,然后使用Receive方法(隐式使用MSDTC)。
问题是运行我的服务的主机(win7 / 2k8r2 sp1)的mqsvc.exe,它什么都不做(当然也与消息的接收/托管无关,MSMQ是干净的)。 mqsvc.exe内存分配增加,并且从不释放任何内存。有关缓存清除间隔的所有MSMQ注册表项都具有较短的时间值(大约1分钟)。
我尝试了几种选择:
与本地和远程MSDTC(显然与消息主机是远程的)。
使用COM库mqoa.dll而不是.NET来对MSMQ使用显式MSDTC事务。
与几个不同的机器(所有win7 / 2k8r2 sp1)。
服务执行没有例外,我可以关闭或处置的所有资源都将尽快关闭/处置。我的服务的内存分配是稳定的。
在所有情况下,都是相同的问题。怎么解决呢?
提前致谢。
文森特
解决方法
在MSDN上解决的问题。
MSDN线程
, 以下修补程序解决了此问题:
当您在Windows 7或Windows Server 2008 R2中的消息队列5.0队列上执行远程事务读取时,消息队列服务会占用大量内存