【问题标题】:Message queueing fails after a few months几个月后消息队列失败
【发布时间】:2016-08-16 06:05:20
【问题描述】:

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

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

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

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

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

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

j0002f0e.mq j0002f0f.mq 等

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

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

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

【问题讨论】:

    标签: wcf msmq netmsmqbinding


    【解决方案1】:

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

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

    【讨论】:

    • 我确实认为它们是某种特殊的信息。感谢您的信息
    猜你喜欢
    • 2011-07-15
    • 2014-08-18
    • 2011-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-26
    相关资源
    最近更新 更多