我有两个使用NserviceBus的Windows服务.一个将消息写入队列,另一个从中读取消息并进行一些处理.所有队列都是事务性的,NserviceBus端点配置如下.
.IsTransactional(true)
.IsolationLevel(IsolationLevel.ReadCommitted)
.MsmqTransport()
.RunTimeoutManager()
.UseInMemoryTimeoutPersister()
.MsmqSubscriptionStorage()
.DisableRavenInstall()
.JsonSerializer()
Run Code Online (Sandbox Code Playgroud)
问题是当大量消息(170,000+)排队时,MSMQ服务(mqsvc.exe)会占用相当多的内存(1.5 - 2.0 GB)并且内存不会被释放至少5 - 6小时.平均邮件大小约为5 - 10 KB.似乎排队的消息越多,它使用的内存越多.基于NServiceBus的Windows服务内存消耗在完全可接受的限制范围内(50 - 100 MB),无论处理多少消息都不会增加.
关于为什么MSMQ会使用这么多内存并且需要很长时间来发布它的任何想法?谢谢堆.