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