【问题标题】:Accessing Clustered MSMQ with an application使用应用程序访问群集 MSMQ
【发布时间】:2012-02-03 16:18:49
【问题描述】:

我们正在从非集群切换到 2 节点集群 MSMQ Windows Server 2008 R2 SP1 Enterprise 环境。以前,当它是非集群时,我们编写了一个 .NET 3.5 C# Windows 窗体应用程序来帮助我们管理我们的环境(因此它执行诸如创建具有正确权限的队列、读取消息、转发消息等任务)。我想让这个应用程序与我们的新集群一起工作。

根据这些文章,

http://blog.terranspot.com/2011/07/accessing-microsoft-message-queuing.html
http://blogs.msdn.com/b/johnbreakwell/archive/2008/02/18/clustering-msmq-applications-rule-1.aspx

我知道我需要将应用程序添加为集群上的资源,因为当我不需要时,我正在访问节点的 MSMQ 实例。为了帮助调试,我关闭了本地 MSMQ 服务。然而,无论我做什么,程序都会不断尝试访问节点的实例。我将它添加为应用程序资源(使用命令行“Q:\QueueManagerConsole.exe”。Q:\ 是在故障转移集群的 2 个节点之间共享的磁盘),但是当我运行它时通过 Windows 资源管理器,它看不到集群实例,只有本地。我没有看到从故障转移群集管理器执行程序的方法,所以我不明白我做错了什么。我切换代码以通过“。”访问所有内容。 (所以 MessageQueue.GetPrivateQueuesByMachine(".")),据我所知,这是您访问本地队列的方式。有人可以解释一下吗,最好表现得好像我不知道自己在做什么一样。如果这是可能的,并且 b。如何正确地做到这一点?

【问题讨论】:

    标签: cluster-computing msmq


    【解决方案1】:

    嗨,我不久前做过类似的事情。试试deploy a service in a failover cluster ,这让我觉得:

    • 将应用配置为使用集群 msmq
    • 将应用配置为集群资源
    • 配置应用以在主机名下连接
    • 设置传输所需的权限集

    至少这会给你一个很好的起点。

    【讨论】:

    • 此示例适用于 Windows 服务,而不是 Windows 窗体。
    【解决方案2】:

    我最终通过创建应用程序的快捷方式并将其放在实际访问集群队列的服务器上来完成这项工作。

    【讨论】:

      【解决方案3】:

      请尝试将以下环境变量添加到您的应用程序使用的环境中:

      _CLUSTER_NETWORK_NAME_ _CLUSTER_NETWORK_HOSTNAME_

      以集群服务器名称作为值。它在我的团队正在开发的系统中工作 - 它包含一些必须访问集群 MSMQ 的服务,它解决了问题。

      【讨论】:

        猜你喜欢
        • 2020-06-17
        • 1970-01-01
        • 2023-03-20
        • 2021-07-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-03-21
        • 1970-01-01
        相关资源
        最近更新 更多