0

我将 MSMQ 作为 Windows 故障转移群集上的群集资源运行。我们希望使用队列的 NAT IP 地址通过 HTTP 将消息发送到队列。

在非集群环境中,这可以正常工作,因为我们将 IP 映射文件部署到 MSMQ/Mapping 文件夹。MSMQ 读取此文件并了解将这些消息发送到何处。

在集群场景中,根本不会转换该 NAT IP 地址。

我的队列是在集群上下文中创建的,并且可以使用http://CLUSTERNAME.Domain/MSMQ/Private $/queuename从同一网络中的机器接收消息

我将以下 XML 映射文件部署到主动和被动节点的 %windir%\system32\msmq\mapping 文件夹中,在主动节点上重新启动 Clustered msmq 服务。

<redirections xmlns="msmq-queue-redirections.xml">  
  <redirection>
      <from>http://NAT_IP_ADDRESS:8080/msmq/Private$/myQueue</from>
      <to>http://Cluster_IP:8080/msmq/Private$/myQueue</to> 
  </redirection>
</redirections>

这没有效果。消息仍然无法传递。

笔记

  1. 我可以看到来自远程发件人的传入请求是活动节点的 IIS 日志。HTTP 状态为 200。
  2. 我可以使用带有 NAT IP 地址的 Internet Explorer(501/505 错误)浏览到远程发件人上的集群 msmq。
  3. 为清楚起见,我已通过 HTTP 成功地将消息发送到队列,但仅来自同一网络。

有人有想法么?

问候

尼尔

4

0 回答 0