消息队列实际应用FAQ
如何访问远程的私有队列?
问题描述:
按照专用队列解释: MachineName\Private$\QueueName;只针对于本机的程序才可以调用的队列,有些情况下为了安全起见定义为私有队列。怎么设置文件夹权限
所以刚开始的时候认为,要想访问远程消息队列,只能使用公共队列。但是后来发现,公共队列依赖Domain Controller(域控),但是在实际的部署的时候,一定要求使用消息队列的应用一定要在某个域中,有些太苛刻!后来发现,私有队列也是可以远程访问的。(很困惑为什么私有队列只能本地访问,这句话,到处都能看到?!)
解决方法:
Queue.Path采用:FormatName:DIRECT指定计算机(建议使用IP形式,当然还支持其他协议,详见msdn相关章节),如:
FormatName:DIRECT=TCP:192.168.1.157\Private$\MSMQDemo1
FormatName:DIRECT=OS:machinename\Private$\MSMQDemo1
如何修改消息队列的最大存储限制?
问题描述:
消息队列中的消息,默认以文件形式存储在windows\system32\msmq\storage下,并且每个文件大小为4MB(所以在一般情况下,单条消息最大不能超过4MB,看到过其解决方法,没有亲自验证,有兴趣的朋友,可以自己查下相关信息)
解决方法:
属性
去掉钩选:消息存储限额、日志存储限额。确定。(此种设置,按照解释,只依赖存储的
硬盘空间)
如何修改消息队列的默认存储位置?
问题描述:
消息队列默认以文件形式存放于:windows\System32\msmq\storage下。系统盘一般空间不是很大,而且在重做系统的时候,往往格盘。
解决方法:
1) 修改存储位置,尝试在MSMQ自动建立目标目录结构。如果MSMQ成功创建成功,那么忽略后续文件夹权限设置。
2) 如果MSMQ无法自动创建对应目录结构,按照下述步骤手工配置对应权限。
3) 以目标文件夹为: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)
参考上述,将msmq的权限由:“只有该文件夹” 改为:“此文件和文件”;
3-5)重复上述步骤给Administrator和MSMQ设置“d:\msmq\storage”的权限。
3-6)检查如下结果:
d:\msmq\storage结果:
d:\msmq结果:
3-7)修改消息队列存储位置
确定
确定
是
如何保证计算机重启之后队列中的消息还在?
问题描述:
消息队列中的消息,在计算机重新启动之后,消息被“清空”。
解决方法:
使用事务性队列。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论