我们开发的产品具有扩展和故障转移的能力
服务器与wcf
msmq
之间相互通信以保持持久性,我们遇到了在群集下使用窗口服务来使用群集msmq的麻烦。
答案是在服务启动时将Environment.SetEnvironmentVariable
配置为以下Environment.SetEnvironmentVariable(_CLUSTER_NETWORK_NAME_,"Cluster");
,然后在群集的msmq上运行wcf,但问题是知道服务何时在群集下以及何时是不是。
有什么办法可以知道吗?
更新
在咨询Microsoft之后,我们得出结论,使用MSMQ的集群架构是错误的,MSMQ是一个服务而不是服务器,因此每个服务器都是队列的主服务器需要配置msmq作为依赖在自己的小组中。 msmq将处理节点和服务器客户端之间的消息。
答案 0 :(得分:1)
我们正在将WCF(netMsmqBinding)与群集MSMQ结合使用。 在故障转移群集管理器(2008)或群集管理(2003)
中添加MSMQ服务时你有一个网络名称,请说“#N; MyNetworkName"有IP的。 MSMQ是该网络名上的accessibel - 因此您的配置中的队列定义应该以MyNetworkName \ private开头...或者如果您的WCF服务也在群集中作为Windows服务运行,您可以选择资源选项"使用comutername的网络名称"你可以使用"。\ private ...."在你的配置 - "备注:比Windows服务应该在与MSMQ"相同的资源组中运行。
编辑:如果我理解你的问题,那么当你是复选框时,请使用网络名称...."在您的群集服务上,相同的代码将使用群集的msmsq,但如果您未在群集上运行或不在资源组中运行,则它将使用本地msmq
确保您的MSMQ安装在目录服务集成模式下。
要组织群集MSMQ,您可以使用microsoft的mmcv.exe工具(常规mmc.exe工具是不够的)。
您可以在此处阅读mmcv.exe:http://support.microsoft.com/kb/898701