私有或公共 MSMQ

Posted

技术标签:

【中文标题】私有或公共 MSMQ【英文标题】:Private or Public MSMQ 【发布时间】:2010-12-23 10:15:52 【问题描述】:

我们将队列用于少数 WCF 服务。 我们正在为使用私有 MSMQ 的 WCF 服务使用 NetMSMQ 绑定。 该系统在我们的 QA 环境中运行良好。 我不确定私人或公共队列之间有什么真正的区别。 客户端应用程序在单独的机器上仍然能够访问其他机器上的 WCF 服务的私有队列。 我不确定这是否是正确的做法。 私有和公共 MSMQ 之间是否存在任何与安全相关的差异。 有人可以说明何时使用。

【问题讨论】:

【参考方案1】:

我还建议使用私有队列。我从 1.0 版开始使用 MSMQ,并在 AD 集成之前进行了整个公共队列部署,并且在两种类型的公共队列部署中都工作过,我认为私有队列方法最适合大多数团体的需求。是的,整体企业消息传递健壮性存在一些限制和一些差距,例如无法使用路由队列服务器,但如果您的目标只是拥有一个体面的可靠消息传递平台,用于存储和转发和使用在队列上触发,那么私有队列方法就可以了。我的团队每天通过私有队列处理超过 300 万条消息事务,并且已经这样做了很多年。

【讨论】:

【参考方案2】:

您需要的信息被很好地隐藏(像往常一样),但可以在这里找到:

http://msdn.microsoft.com/en-us/library/ms706878(VS.85).aspx

这在很大程度上取决于您的部署、您的 Active Directory 集成级别以及您对队列的分配要求。如果是 WCF,我假设队列是通过 IIS/WPAS 公开的,这会将队列从应用程序中抽象出来,因此在该模式下它可能不太相关,并且本地队列就足够了。

【讨论】:

【参考方案3】:

必须使用大量使用公共 MSMQ 的应用程序,我会坚持使用私有队列。主要优点是您不会被绑定到活动目录。我有很多次对本地 MQ 所做的更改不会复制到 AD,所以我必须让服务器管理员登录到域控制器并为我删除队列,以便我可以重新创建它并确保所有设置正确。

这是 Microsoft 的一篇文章,探讨了其中的一些差异。

http://technet.microsoft.com/ja-jp/library/cc753440%28WS.10%29.aspx

【讨论】:

公共队列的用例是什么?你能举个例子,我必须在 AD 中查找队列吗?谢谢。 您最好将此作为一个新问题提出。

以上是关于私有或公共 MSMQ的主要内容,如果未能解决你的问题,请参考以下文章

在 MSMQ 消息中发送具有 BSTR 值类型的 COM 对象

方法调用公共/私有成员或方法最佳实践 - C#.NET

不是公共或私有的变量-Java

Python 中的“公共”或“私有”属性?啥是最好的方法?

C++ 中的默认继承模式(公共、保护或私有)是啥? [复制]

私有的嵌套类(内部或静态)是不是可能具有具有公共访问权限的方法?