【问题标题】:Clustered MSMQ - Invalid queue path name when sending群集 MSMQ - 发送时队列路径名无效
【发布时间】:2011-10-30 05:21:31
【问题描述】:

我们有一个在 Windows 2008 R2 上运行的两节点集群。我已经在两个节点上安装了带有消息队列服务器和目录服务集成选项的 MSMQ。我创建了一个名为 TESTV0Msmq 的集群 MSMQ 资源(我们使用事务队列,因此之前已经创建了 DTC 资源)。

当我 ping 虚拟资源时,它会正确解析。

我使用 MessageQueue 构造器在 c# 中创建了一个小型控制台可执行文件,以允许我们发送基本消息(到事务和非事务队列)。

活动节点开始,这些路径有效:

.\private$\clustertest

{机器名}\private$\clustertest

TESTV0Msmq\private$\clustertest 返回“无效的队列路径名”。

根据这篇文章: http://technet.microsoft.com/en-us/library/cc776600(WS.10).aspx

我应该可以做到吗?

特别是,队列可以在虚拟服务器上创建,并且 可以向他们发送消息。此类队列使用 VirtualServerName\QueueName 语法。

【问题讨论】:

    标签: msmq cluster-computing


    【解决方案1】:

    听起来像是经典的集群 MSMQ 问题:

    Clustering MSMQ applications - rule #1

    如果您可以从活动节点访问“.\private$\clustertest”或“{machinename}\private$\clustertest”,那么这意味着有一个名为 clustertest 的队列由 LOCAL MSMQ 队列管理器托管。它在被动节点上不起作用,因为那里还没有名为 clustertest 的队列。如果您对资源进行故障转移,它应该会失败。

    您需要改为在集群资源中创建一个队列。 TESTV0Msmq\private$\clustertest 失败,因为队列是在本地机器而不是虚拟机上创建的。

    干杯
    约翰·布雷克韦尔

    【讨论】:

    • 假设您是约翰·布雷克韦尔,他回答了我在过去 48 小时内在 www 上涉过的 94% 的 MSMQ 相关问题,我相信您是正确的。我认为集群虚拟服务器存在配置问题。使用 mmvc.exe 打开服务器配置后,我没有看到应用程序和服务下列出的 MSMQ。而且我注意到活动节点上的 MSMQ 服务仍然具有自动启动模式,这是我所读到的并没有预料到的。将涉水一些......
    • 好吧。所以有人开枪打死我。正如约翰建议的那样,我正在查看被动节点。现在我可以从活动节点写入集群队列。我只需要整理一下为什么我不能从域中的远程计算机写入集群或非集群。
    • 如果您可以从集群外部写入队列并且传出队列连接,则很可能是权限问题。如果传出队列无法连接,则很可能是 DNS 问题。
    • 是的。当然。安全。从我的角度来看,一旦启用端到端跟踪,它就会变得清晰起来,尽管在事件日志中出现一些错误而不是猜测会很好。集群专用队列最初是在以本地系统管理员身份登录时创建的。我以域管理员身份登录并重新创建了队列。我现在可以在本地和远程使用集群队列进行读写。谢谢
    • 不,事件日志会被消息错误淹没;事件日志应该用于服务事件。使用负源日志和死信队列可以轻松跟踪消息问题。
    猜你喜欢
    • 2011-04-21
    • 2017-10-23
    • 2012-11-04
    • 1970-01-01
    • 2012-04-18
    • 2012-08-29
    • 2018-02-02
    • 2018-09-02
    • 2012-02-12
    相关资源
    最近更新 更多