群集中的Msmq不接收本地发送的MSMQ事务消息 [英] Msmq in cluster does not receive locally sent MSMQ tranactional messages

查看:81
本文介绍了群集中的Msmq不接收本地发送的MSMQ事务消息的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个带有3个NIC卡的两节点故障转移2008 Enterprise群集.一张网卡用于我们的商务系统网络,第二张用于工厂控制网络,第三张用于集群之间的心跳.我正在运行MSMQ 4.0,因为 HKLM \ SOFTWARE \ Microsoft \ MSMQ \ Parameters \ CurrentBuild注册表值是6.0.6001,我相信是MSMQ 4.0.

I have a two node failover 2008 Enterprise cluster with 3 NIC cards.  One nic card is for our buisness system network, the second is for the plant control network and the third is for the heartbeat between the cluster.  I am running MSMQ 4.0 because HKLM\SOFTWARE\Microsoft\MSMQ\Parameters\CurrentBuild registry value is 6.0.6001 which I believe is MSMQ 4.0.

我在虚拟MSMQ资源中将队列定义为chtl_track,并且该队列是事务性的.我有一个HMI应用程序,可以在工厂网络上的任何PC上运行,该应用程序将消息发送到chtl_track队列,并接收和处理消息 好的.如果我从集群的本地节点之一运行该HMI应用程序,则可以看到本地传出队列DIRECT = OS:test-chtlMsmq \ private $ \ chtl_track'消息数'增加1,并且'Unacknowledged(msgs) '增加1. 虚拟MSMQ资源的消息和chtl_track的日记队列永远不会收到该消息,日记队列计数也永远不会增加.这些是交易性问题.本地节点传出队列DIRECT = OS:test-chtlMsmq \ private $ \ chtl_track的状态 显示连接状态.

I have a queue defined in the virtitual MSMQ resource as chtl_track and is transactional.  I have an HMI application which I can run from any pc on the plant network which sends messages to the chtl_track queue and the messages are received and processed ok.  If I run that HMI application from one of the local nodes of the cluster I can see the local outgoing queue DIRECT=OS:test-chtlMsmq\private$\chtl_track 'Number of Messages' increase by one and also the 'Unacknowledged(msgs)' increment by one.  The messages and journaled que of chtl_track of the virtual MSMQ resource never gets the message and the journaled queue count never increases.  These are transactional ques.  The state of the local node outgoing queue DIRECT=OS:test-chtlMsmq\private$\chtl_track shows a state of connected.

现在,如果我将虚拟MSMQ资源置于脱机状态并使MSMQ脱机并尝试从本地群集节点之一发送消息,则该消息将显示在传出队列DIRECT = OS:test-chtlMsmq \ private $ \ chtl_track中.当我重新启动虚拟MSMQ资源时 邮件将从本地传出队列中删除,并且邮件和Unacknowledge邮件数的计数器加1.我从没在系统中的任何地方看到消息队列.但是,任何运行HMI应用程序的PC都可以 在虚拟MSMQ资源处于在线状态时,将消息发送到que只是找到并接收并处理它们.

Now if I go the virtual MSMQ resource and take MSMQ offline and try to send a message from one of the local cluster nodes I see the message show up in the outgoing queue DIRECT=OS:test-chtlMsmq\private$\chtl_track.  When I restart the virtual MSMQ resource the message is removed from the local outgoing queue and the counters for the number of messages and Unacknowledge messages are incremented by one.  I never see a message queue up anywhere on the system. However, any pc running the HMI application can send messages to the que just find and have them received and processed while the virtual MSMQ resource is online.

现在,我尝试将BindInterfaceIP的注册表设置设置为虚拟MSMQ资源服务器的注册表设置.完成此操作后,我无法将任何消息发送到chtl_track que.甚至不是从PC上运行的HMI.我不得不恢复 注册表以使其正常工作.所有文档都指出,仅应针对MSMQ que 2.0和3.0执行此操作.它没有提到4.0.

Now I have tried setting the registry setting of BindInterfaceIP to be that of the virtual MSMQ resource server.  After I did this I could not send any messages to the chtl_track que.  Not even from the pc's running the HMI.  I had to restore the registry to get it to work.  All documentation states that this should only be done for MSMQ que 2.0 and 3.0.  It makes no mention of 4.0.

我还尝试安装Windows6.1-KB976438-x64修补程序.但是当我运行它时,它指出我的操作系统版本未涵盖.

I have also tried installing Windows6.1-KB976438-x64 hot fix.  But when I run it, it states that my OS version is not covered.

这非常令人沮丧,因为我没有得到任何返回的错误,而且如果我使用本地群集msmq服务,则该消息似乎只是被丢进了位桶中.只要我不使用集群的本地消息que,一切似乎 可以正常工作.但是,我需要在群集上运行的服务之间发送消息,但无法使它正常工作.

This is very frustrating because I am not getting any error returned and it appears that the message just gets tossed in the bit bucket if I use the local cluster msmq service.  As long as I do not use the local message que of the cluster all seems to work ok.  However, I need to send messages between services running on the cluster and I can not get that to work.

任何人都对尝试什么有任何想法.

Anybody have any ideas on what to try.

推荐答案

Hi

在本地节点上运行该应用程序等效于在远程客户端上运行-应用相同的故障排除方法.

Running the application on the local node is equivalent to running it on a remote client - the same troubleshooting applies.

根据您的描述,发送了一条消息,但从未到达,也没有返回确认.常见的解释是所使用的IP地址与所需目的地的IP地址不匹配.接收机器只是丢弃消息 当它指向另一台机器时.列应显示要发送到的IP地址-它与test-chtlMsmq的IP地址匹配吗?如果不同,则说明您遇到名称解析问题,而不是MSMQ问题.看看工作正常的遥控器 客户看到什么下一跳"?在那儿.

From your description, a message is sent but never arrives and no acknowledgement is returned. A common explanation would be that the IP address being used does not match that of the desired destination. The receiving machine simply discards the message as it addressed to a different machine. The "next hop" column should show the IP address being sent to - does it match that of test-chtlMsmq? If it is different then you have a name resolution issue and not an MSMQ problem. Have a look at a working remote client to see what the "next hop" is there.

BindInterfaceIP仅在MSMQ从另一个接口(例如心跳接口)发送时使用.如您所知,这是与远程客户端一起使用的,因此无需修改它.

BindInterfaceIP would only be used if MSMQ was sending out of a different interface - such as the heartbeat one. As you know this is working with remote clients there is no need to modify this.

欢呼

John Breakwell

John Breakwell


这篇关于群集中的Msmq不接收本地发送的MSMQ事务消息的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆