使用应用程序访问群集MSMQ

时间:2012-02-03 16:18:50

标签: cluster-computing msmq

我们正在从非群集切换到2节点群集MSMQ Windows Server 2008 R2 SP1企业环境。以前,当它是非群集时,我们编写了一个.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。如何正确地做到这一点?

3 个答案:

答案 0 :(得分:0)

嗨,我刚才做了类似的事情。试试deploy a service in a failover cluster ,它让我知道:

  • 将应用配置为使用群集msmq
  • 将app配置为群集资源
  • 将应用配置为在主机名下连接
  • 设置为transpot获取的权限集

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

答案 1 :(得分:0)

我终于通过创建应用程序的快捷方式并将其放在实际访问群集队列的服务器上来实现此目的。

答案 2 :(得分:0)

请尝试按照环境变量添加到您的应用程序使用的环境:

_CLUSTER_NETWORK_NAME_ _CLUSTER_NETWORK_HOSTNAME _

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