集群 MSMQ - 发送时队列路径名无效
我们有一个在 Windows 2008 R2 上运行的两节点集群。我已在两个节点上安装了带有消息队列服务器和目录服务集成选项的 MSMQ。我创建了一个名为 TESTV0Msmq 的群集 MSMQ 资源(我们使用事务队列,因此之前已创建 DTC 资源)。
当我 ping 虚拟资源时,它可以正确解析。
我使用 MessageQueue 构造函数在 C# 中创建了一个小型控制台可执行文件,以允许我们发送基本消息(到事务性和非事务性队列)。
从活动节点,这些路径有效:
.\private$\clustertest
{machinename}\private$\clustertest
,但 TESTV0Msmq\private$\clustertest 返回“无效的队列路径名称” 。
根据这篇文章: http://technet.microsoft.com/en-us/ Library/cc776600(WS.10).aspx
我应该能够做到这一点吗?
特别是,可以在虚拟服务器上创建队列,并且 可以向他们发送消息。此类队列的寻址使用 VirtualServerName\QueueName 语法。
We have a two node cluster running on Windows 2008 R2. I've installed MSMQ with the Message Queue Server and Directory Service Integration options on both nodes. I've created a clustered MSMQ resource named TESTV0Msmq (we use transactional queues so a DTC resource had been created previously).
The virtual resource resolves correctly when I ping it.
I created a small console executable in c# using the MessageQueue contructor to allow us to send basic messages (to both transactional and non transactional queues).
From the active node these paths work:
.\private$\clustertest
{machinename}\private$\clustertest
but TESTV0Msmq\private$\clustertest returns "Invalid queue path name".
According to this article:
http://technet.microsoft.com/en-us/library/cc776600(WS.10).aspx
I should be able to do this?
In particular, queues can be created on a virtual server, and
messages can be sent to them. Such queues are addressed using the
VirtualServerName\QueueName syntax.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
听起来像经典的集群 MSMQ 问题:
集群 MSMQ 应用程序 - 规则 #1
如果您可以从活动节点访问“.\private$\clustertest”或“{machinename}\private$\clustertest”,则这意味着有一个名为 clustertest 的队列,由 LOCAL MSMQ 队列管理器托管。它在被动节点上不起作用,因为那里还没有名为 clustertest 的队列。如果对资源进行故障转移,它应该会失败。
您需要在集群资源中创建一个队列。 TESTV0Msmq\private$\clustertest 失败,因为队列是在本地计算机而不是虚拟机上创建的。
干杯
约翰·布瑞克韦尔
Sounds like classic Clustering MSMQ problem:
Clustering MSMQ applications - rule #1
If you can access ".\private$\clustertest" or "{machinename}\private$\clustertest" from the active node then that means there is a queue called clustertest hosted by the LOCAL MSMQ queue manager. It doesn't work on the passive node because there is no queue called clustertest there yet. If you fail over the resource, it should fail.
You need to create a queue in the clustered resource instead. TESTV0Msmq\private$\clustertest fails because the queue was created on the local machine and not the virtual machine.
Cheers
John Breakwell