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