前几天我们在使用 MSMQ 时遇到了问题,我正试图了解发生了什么。
我们有大约 10 个服务相互发送消息。有些使用 WCF,有些直接使用 System.Messaging。
在某些时候,不会再发送一条消息,所有日志都会填满
“资源不足,无法执行此操作”
这些消息小于 4MB,并且已经运行了好几个月,所以消息大小不是问题。
进一步查看 msmq\storage 文件夹,其中有 1.07 GB 的消息文件,其中 950 MB 是以“j”开头的文件。
j0002f0e.mq j0002f0f.mq 等
这些消息代表日志文件,实际上,一个每天发送数千条消息的 (WCF) 服务启用了 useSourceJournal。所有这些文件的大小均为 4MB,最大它们都包含过去的多个队列消息。
现在这可能是原因吗?是否有 1GB 的限制,日志消息堆积起来,MSMQ 开始失败,然后一般资源不足?
是否应该每隔一段时间清除一次日志队列以使存储文件夹(几乎)为空?