2012-07-01 35 views
1

我们开发了具有扩展和故障转移能力的产品。
服务器通过wcfwcf进行通信,通过msmq获得持久性,我们遇到了麻烦,在群集下配置使用窗口服务以使用群集msmq。
答案是在服务启动时将Environment.SetEnvironmentVariable配置为如下Environment.SetEnvironmentVariable(_CLUSTER_NETWORK_NAME_,"Cluster");,之后wcf over群集msmq正在工作,但问题是要知道服务何时处于群集之下以及何时不在群集中。
有什么办法可以知道吗?Msmq over cluster,如何知道服务是否在群集下?

UPDATE

与微软协商后,我们得出结论,使用MSMQ错了集群的架构,MSMQ是一种服务,而不是为此每个服务器服务器是队列需要主以msmq作为其自己的组中的依赖项进行配置。 msmq将负责节点和服务器客户端之间的消息。

回答

1

我们将WCF(netMsmqBinding)与群集MSMQ结合使用。 当您在故障转移群集管理器(2008)或群集管理器(2003)

中添加MSMQ服务时,您有一个网络名称,例如具有IP的“MyNetworkName”。 MSMQ是该网络名上的accessibel - 因此您的配置中的队列定义应以MyNetworkName \ private ...开头或者如果您的WCF服务也作为群集中的Windows服务运行,则可以选择资源选项“Use network名称为comutername“,您可以在配置中使用”。\ private ....“ - ”备注:比Windows服务应该与MSMQ在同一资源组中运行“。

编辑:如果我很好地理解你的问题,当你在群集服务上的复选框“use networkname ....”时,相同的代码将使用群集的msmsq,但是如果你没有在群集上运行或不在资源组中它将使用本地msmq

确保您的MSMQ安装在目录服务集成模式下。

要组织群集MSMQ,您可以使用microsoft的mmcv.exe工具(常规mmc.exe工具是不够的)。

您可以在这里阅读mmcv.exe:http://support.microsoft.com/kb/898701

相关问题