gpt4 book ai didi

MSMQ 存储已满

转载 作者:行者123 更新时间:2023-12-02 03:42:45 27 4
gpt4 key购买 nike

我在 Windows 7 下将 NServiceBus 3.3.8 与 MSMQ 一起使用。目前,对于可恢复消息和快速消息,发送和接收工作正常。但是,我注意到MSMQ存储区在读取器消费完消息后并没有清理。这导致我在达到允许的最大队列大小时手动清理 MSMQ 存储。

我尝试减少注册表中的 MessageCleanupInterval 并重新启动 MSMQ 服务,但我仍然没有看到消息被删除。当检查存储文件夹中的 pxxxxxx.mq 文件时,这些文件包含我发送的可恢复消息和快速消息。

有没有人知道此消息累积的原因?有没有办法通过 MSMQ/NServiceBus 中的某些配置来阻止它?

最佳答案

空存储文件将在 6 小时后删除。这是出于性能原因 - MSMQ 重新使用现有文件比创建新文件更快。

如果您打开 P*.MQ 文件,您确实会看到以前消息中的数据.这与分析硬盘的任何随机扇区完全相同。如果一条消息已被处理,存储区域将被标记为空闲(在相应的 L*.MQ 文件中),以便它可以被 future 的消息覆盖。在阅读每条消息后清除存储空间没有任何好处。

如果存储文件只包含一条消息,它们将闲置。没有碎片整理来压缩存储文件的使用。如果文件在清理间隔或重新启动后没有被清除,那么它就不是空的。检查 MSMQ 性能计数器以查看整个系统(而不是您感兴趣的队列)是否有任何消息。

"However, I noticed that the MSMQ storage area is not cleaned up after the messages are consumed by the reader. This is causing me to clean-up the MSMQ storage manually when it reaches the maximum allowed queue size."

这是不正确的。如果删除存储文件并且不再达到配额,则必须删除真实消息以释放空间。空存储文件对您的消息配额的影响为零。

关于MSMQ 存储已满,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19085893/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com