我将 MSMQ 配置为在集群中运行。集群由两个 Hyper-V 虚拟机组成,并在第三个虚拟机上使用公共存储(所有虚拟机共享 windows 域,它们通过网络相互看到)。故障转移群集管理器管理单元显示 MSMQ 服务正在运行。机器上的非集群 MSMQ 服务是集群的成员,显示为在服务管理单元中运行。现在我尝试从远程计算机(从第三个虚拟机)向集群 MSMQ 服务和非集群 MSMQ 服务发送消息。我使用以下队列名称:
- FormatName:Direct=OS:{clustered-msmq-netbios-name}\private$\{queueName}
- FormatName:Direct=TCP:{clustered-msmq-ip-address}\private$\{queueName}
- FormatName:Direct=TCP:{non-clustered-msmq-ip-address}\private$\{queueName}
当指定非集群 msmq ip 地址时,消息将传递到非集群 msmq 实例。但是当我尝试访问集群的 msmq 实例时,发送的消息停留在传出消息队列中,并且显示“等待连接”(无法连接 Winsock 套接字)。集群 msmq 实例上的队列为空。
我尝试使用 telnet 连接到集群 msmq 服务。对于连接,我指定了集群 msmq ip-address 和端口 1801。它说“无法打开与主机的连接,在端口 1801:连接失败”。
任何想法?
附加信息。当我在两个集群服务器都在线时单击“管理消息队列”菜单项时,在管理单元中树中没有消息队列项。当我暂停一台服务器(第二台)时,树中会出现消息队列项。当树中有一个消息队列项目时,消息开始被处理(我看到它们从发送服务器上的传出消息队列中消失,但我没有看到它们出现在接收服务器上)。