我们最近遇到MSMQ(在工作组中的Windows Server 2008 R2上)停止发送消息的问题。 事实certificate,这是因为MSMQ已经达到了消息存储的限制,因此对可怕的“资源不足”错误的一切作出了回应。
目前为止还不够公平,但是事情依然如此:据我们所知,所有使用光盘空间的消息都是在另一台机器上的一个队列中(我们猜测另一台机器暂时停止接收消息由于我们还没有弄清楚的原因,导致发送MSMQ上的所有内容都被备份)。 所以处理这些消息实际上应该释放光盘空间。 事实上,我们发现,只要我们删除了发送机器上的消息存储限制,就开始发送消息。 在稍后的某个时间点(我们没有看到什么时候,但是这个线程MSMQ继续增长,即使队列中没有消息表明它会在6个小时之后),所有的p *****。占用磁盘空间的mq消息被清理,允许我们恢复存储限制。
对于我们来说MSMQ拒绝发送那些超出存储限制的消息是毫无意义的,当发送这些消息时会释放存储空间。 但是我们所有的证据都是这样的。 任何人都可以确认这是否实际上是如何MSMQ行为?
当时的外出队列的状态将提供一些见解。
可能发生的情况如下:
1 MSMQ QM1发送消息
2 MSMQ QM2发回确认消息
3确认消息不能以超出配额的forms发送
4 MSMQ QM1无法完成发送(我假设交易消息)
5转到1
一旦配额解除,这些步骤就可以顺利完成。