【发布时间】:2010-12-16 11:50:34
【问题描述】:
MSMQ:从队列接收时,什么会导致“资源不足以执行操作”错误?
当时队列只保存 2,000 条消息,每条消息的大小约为 5KB。
【问题讨论】:
-
您可能会泄漏资源(内存、句柄等)。
-
我同意,手柄是我的赌注。什么操作系统?
标签: msmq
MSMQ:从队列接收时,什么会导致“资源不足以执行操作”错误?
当时队列只保存 2,000 条消息,每条消息的大小约为 5KB。
【问题讨论】:
标签: msmq
来自 John Breakwell 的博客有十一种可能性:
http://blogs.msdn.com/johnbreakwell/archive/2006/09/18/761035.aspx
我会检查您的队列版本以及出错时您的队列打开的连接数量(往返)。这些“可能”中的任何一个都会导致您的错误。
【讨论】:
MessageQueue对象都被认为是一个连接,所以你需要Dispose他们。
我有同样的错误信息,解决方法很简单。
有很多消息位于各种队列中,并且已达到存储限制。我去了:
服务器管理器 -> 功能
右键单击消息队列
选定的属性
在“常规”选项卡中取消勾选存储限制
我被告知使用 MSMQ 的服务将重新启动,然后错误就消失了。
【讨论】:
Computer Managment访问-> Message Queuing,右键-> Properties
我的传出队列中有太多失败的消息。 检查系统队列 -> 死信消息。我清除了这个队列,它又可以正常工作了。
【讨论】:
我遇到了同样的错误,在检查了上面提到的事情后发现是导致问题的计算机名称!它超过了 15 个字符,在我将其更改为较短的字符后,问题就消失了。
【讨论】:
如果启用了日志,您将存储从队列中删除的所有消息的副本,因此您也可能会达到 MSMQ 日志限制。短期修复可能是清除队列的日志,长期 - 禁用日志。
【讨论】:
对我来说,问题不在于托管队列的机器。将消息发送到队列的机器。我注意到源机器上的“Outgoing Queues”显示了大量消息,这导致我进入MSMQ Messages Are Stuck In The Outgoing Queue。在源机器上重新安装 MSMQ 对我来说是解决它的问题。
【讨论】: