如果在 MSMQ 私有队列上启用了日志,并且有存储限制(例如 100 千字节),当超出该限制时会发生什么?您可以配置此行为吗?
具体来说:
- 消息还能写入队列吗?
- 这些消息会被写入日志吗?
- 已经写入日志的旧消息会怎样?
人们似乎暗示设置限制是解决日志增长和超出服务器资源的风险的一种方法,但我还没有发现有人解释超出限制时会发生什么。
在我们自己的(非常有限的)测试中,似乎消息只是停止写入日志。(即,当日志队列达到其限制时,旧消息仍保留在日志中,但对于所有未来的消息,日志实际上已被关闭)。
答案1
是的,新日志消息将停止日志功能。日志消息应像任何其他消息一样进行处理,因此不应允许它们累积。
答案2
我发现有报告称完整的日志甚至会阻止接收消息,而不仅仅是将它们移动到日志中:
但是,这可能是因为 MSMQ 在那时达到了其他配额,可能是所有队列的全局存储限制,而不仅仅是因为日志。我无法仅通过限制日志来重现它。但无论如何,最好不要让日志增长太多。
顺便说一句,我们制作了商业工具,可以定期备份和清空日志,除此之外还有以下功能:队列监控器