【发布时间】:2014-09-24 15:35:38
【问题描述】:
当我尝试通过消息总线测试队列时。我已经检查过了,权限设置为对所有人完全控制。我使用来自另一台机器的“msmqmng.exe send”将消息放入队列,它可以正常工作并且绝对是我发送的消息。那么我还可能缺少哪些其他活动部件???
【问题讨论】:
标签: msmq
当我尝试通过消息总线测试队列时。我已经检查过了,权限设置为对所有人完全控制。我使用来自另一台机器的“msmqmng.exe send”将消息放入队列,它可以正常工作并且绝对是我发送的消息。那么我还可能缺少哪些其他活动部件???
【问题讨论】:
标签: msmq
在服务器管理器中设置队列,消息队列我忽略了将数据源名称添加到队列名称中。 (queue_name_dsNAme) 所以从一方面我能够插入消息。但是,从服务器组,消息总线,它会自动将数据源附加到要测试的队列中。所以,队列真的不存在。
原来还有另一个转折点......即使在整理命名约定之后,还有一个应用程序知道队列并正在读取它。当发送测试消息时,应用程序在测试机制有机会接收它之前就抓住了它,这导致了超时。通过启用日记功能,消息会放在那里,您可以看到队列中的内容。虽然这一切看起来很明显......问一些愚蠢的问题是值得的。
【讨论】:
我花了几天的时间来解决这个错误,根本原因是超出了 MSMQ 的存储配额!这似乎与错误消息无关,因此很难检测到...
向 MSMQ 发送消息时,发送方服务器将使用位于发送方端的传出队列,并且该传出队列正在使用该发送方服务器上的存储。 MSMQ 组件具有在 MSMQ 属性中定义的最大配额,当超过此配额时,上述错误消息开始弹出(这就是为什么当您从另一台机器发送时,它工作正常,因为问题出在发件人而不是接收器)。
分辨率: 要更改此配额,请右键单击消息队列(例如,如果使用 Windows server 2003,则从计算机管理中)然后属性...(我无法发布图像,因为我是新用户),但在属性窗口中,您会在第一个选项卡是可编辑的存储限制字段。
要查看服务器上当前使用的存储,打开存储的路径,查看其大小:(在同一属性窗口中打开存储选项卡,获取存储文件夹的路径) 如果配额的大小与存储文件夹的大小相似,那么这就是问题的根本原因。
如果您无权增加此配额限制,您应该将您的用户添加到消息队列属性窗口中的“安全”选项卡中。
希望这会有所帮助... 如果您同意,请投票,以便我在下一个答案中获得一些观点并发布图片...... :-)
【讨论】: