我们在Windows 2008 R2上运行了一个双节点群集。我在两个节点上都安装了MSMQ和Message Queue Server以及目录服务集成选项。我创建了一个名为TESTV0Msmq的集群MSMQ资源(我们使用事务队列,因此之前已经创建了DTC资源)。
我ping它时虚拟资源正确解析。
我使用MessageQueue构造函数在c#中创建了一个小型控制台可执行文件,以允许我们发送基本消息(同时发送到事务和非事务队列)。
从活动节点这些路径起作用:
\私人$ \ clustertest
{计算机名} \私人$ \ clustertest
但是 TESTV0Msmq \ private $ \ clustertest 会返回“无效的队列路径名”。
根据这篇文章: http://technet.microsoft.com/en-us/library/cc776600(WS.10).aspx
我应该可以这样做吗?
特别是,可以在虚拟服务器上创建队列,并且 消息可以发送给他们。这些队列使用 VirtualServerName \ QueueName语法。
答案 0 :(得分:1)
听起来像经典的Clustering MSMQ问题:
Clustering MSMQ applications - rule #1
如果您可以从活动节点访问“。\ private $ \ clustertest”或“{machinename} \ private $ \ clustertest”,那么这意味着LOCAL MSMQ队列管理器托管了一个名为clustertest的队列。它在被动节点上不起作用,因为那里还没有名为clustertest的队列。如果您对资源进行故障转移,则应该失败。
您需要在群集资源中创建一个队列。 TESTV0Msmq \ private $ \ clustertest失败,因为队列是在本地计算机而不是虚拟机上创建的。
干杯
John Breakwell