1

前几天我们在使用 MSMQ 时遇到了问题,我正试图了解发生了什么。

我们有大约 10 个服务相互发送消息。有些使用 WCF,有些直接使用 System.Messaging。

在某些时候,不会再发送一条消息,所有日志都会填满

“资源不足,无法执行此操作”

这些消息小于 4MB,并且已经运行了好几个月,所以消息大小不是问题。

进一步查看 msmq\storage 文件夹,其中有 1.07 GB 的消息文件,其中 950 MB 是以“j”开头的文件。

j0002f0e.mq j0002f0f.mq 等

这些消息代表日志文件,实际上,一个每天发送数千条消息的 (WCF) 服务启用了 useSourceJournal。所有这些文件的大小均为 4MB,最大它们都包含过去的多个队列消息。

现在这可能是原因吗?是否有 1GB 的限制,日志消息堆积起来,MSMQ 开始失败,然后一般资源不足?

是否应该每隔一段时间清除一次日志队列以使存储文件夹(几乎)为空?

4

1 回答 1

1

日记消息就像任何其他消息一样。它们会占用空间,直到您的应用程序对它们进行处理。它们不像系统会在一段时间后清除的临时文件。这个想法是,如果启用了日记功能(在消息或队列级别),那么消息很重要,否则您一开始就不会费心打开它。处理日志消息应该是您应用程序的一部分(或至少是正式维护程序的一部分)。

日记有配额,就像普通消息一样。

日志配额

于 2016-08-17T11:54:26.383 回答