文档介绍:消息队列实际应用FAQ
如何访问远程的私有队列?
问题描述:
按照专用队列解释: MachineName\Private$\QueueName;只针对于本机的程序才可以调用的队列,有些情况下为了安全起见定义为私有队列。
所以刚开始的时候认为,要想访问远程消息队列,只能使用公共队列。但是后来发现,公共队列依赖Domain Controller(域控),但是在实际的部署的时候,一定要求使用消息队列的应用一定要在某个域中,有些太苛刻!后来发现,私有队列也是可以远程访问的。(很困惑为什么私有队列只能本地访问,这句话,到处都能看到?!)
解决方法:
:FormatName:DIRECT指定计算机(建议使用IP形式,当然还支持其他协议,详见msdn相关章节),如:
FormatName:DIRECT=TCP:\Private$\MSMQDemo1
FormatName:DIRECT=OS:machinename\Private$\MSMQDemo1
如何修改消息队列的最大存储限制?
问题描述:
消息队列中的消息,默认以文件形式存储在windows\system32\msmq\storage下,并且每个文件大小为4MB(所以在一般情况下,单条消息最大不能超过4MB,看到过其解决方法,没有亲自验证,有兴趣的朋友,可以自己查下相关信息)
解决方法:
属性
去掉钩选:消息存储限额、日志存储限额。确定。(此种设置,按照解释,只依赖存储的硬盘空间)
如何修改消息队列的默认存储位置?
问题描述:
消息队列默认以文件形式存放于:windows\System32\msmq\storage下。系统盘一般空间不是很大,而且在重做系统的时候,往往格盘。
解决方法:
修改存储位置,尝试在MSMQ自动建立目标目录结构。如果MSMQ成功创建成功,那么忽略后续文件夹权限设置。
如果MSMQ无法自动创建对应目录结构,按照下述步骤手工配置对应权限。
以目标文件夹为:D:\msmq\storage 说明文件夹权限配置。
3-1) 建立文件夹:D:\msmq\storage
3-2) 去掉:D:\msmq所有用户的所有权限
高级
更改权限
不钩选:“包括可从该对象的父项继承的权限”
点删除,然后“确定”
点:是。
3-3)为Administrator设置“d:\msmq”的权限。
高级
更改权限
添加
确定
选择:此文件夹和文件;钩选:完全控制;
依次确定。
3-4)为MSMQ设置“d:\msmq”的权限。
运行命令:
icacls d:\msmq /grant "NT SERVICE\MSMQ":(F)