.net MSMQ消息卡在传出队列中

.net MSMQ消息卡在传出队列中,.net,msmq,.net,Msmq,虽然我的问题看起来与已经在SO上找到的一些问题相似,但这些帖子对我没有帮助,所以这里是: 鉴于: 同一段上的两台机器(自然在同一个域中,实际上在同一张桌子上) 这两台机器都是Windows 7工作站 两台机器都禁用了防火墙 两台机器都能看到对方(ping works) 其中一个队列上有一个专用的非事务性消息队列test 发送方计算机具有HKEY\U LOCAL\U machine\SOFTWARE\Microsoft\MSMQ\SimpleClient\@BinaryEnabled='Yes'

虽然我的问题看起来与已经在SO上找到的一些问题相似,但这些帖子对我没有帮助,所以这里是:

鉴于:

  • 同一段上的两台机器(自然在同一个域中,实际上在同一张桌子上)
  • 这两台机器都是Windows 7工作站
  • 两台机器都禁用了防火墙
  • 两台机器都能看到对方(ping works)
  • 其中一个队列上有一个专用的非事务性消息队列test
  • 发送方计算机具有
    HKEY\U LOCAL\U machine\SOFTWARE\Microsoft\MSMQ\SimpleClient\@BinaryEnabled='Yes'
  • 队列所有者从另一台计算机发送消息
  • 消息卡在传出队列上,从未到达目标
  • 当从同一台机器(即本地)发送时,消息正常到达
该消息使用以下代码发送:

var q = new MessageQueue(@"FormatName:Direct=OS:il-mark-lap\private$\test");
q.Send(string.Format("Test message sent at {0} from {1}", DateTime.Now, Environment.MachineName));
其中,il mark lap是带有队列的机器的地址

我到底要做什么才能使这东西运转起来


非常感谢。

通常局域网中的专用队列可以相互发送消息。但有时私人队列可能无法访问,并导致其他人创建传出队列。。。不知道为什么。

我想我找到了这个问题的答案,我也遇到了同样的问题,我的问题只是在10分钟没有向客户端发送消息后被卡住了。请看这篇知识库文章,它可能会对您有所帮助。另外,在我的例子中,它与重新启动无关,所以不要因此而放弃,我确实在netstat中展示了这些症状,消息最初会在客户机首次启动时通过


我刚刚处理了这个问题,以下是我为解决这个问题所采取的步骤:

从Microsoft获取该实用程序,在使用MSMQ的机器上运行该实用程序,DTC必须能够相互对话,MSMQ才能工作

这反过来让我意识到MSMQ高度依赖于NetBIOS名称——机器必须能够通过单独使用NetBIOS名称相互ping

完成此操作后,请确保重新启动所有消息队列服务(在发送计算机和目标计算机上,因为它需要能够执行反向NetBIOS操作)

在我的例子中,一旦我通过NetBIOS名称解析得到DTC——重启服务——一切都开始神奇地工作


我强烈建议您访问以获取更多资源。

答案很简单。确保可以从源计算机到目标计算机以及从目标计算机到目标计算机的telnet端口18011352103和2105。还要确保MSMQ在两台机器上都运行。

我今天遇到了这个问题。要解决这个问题,我们必须打开接收服务器的消息队列属性对话框,并在服务器安全选项卡上取消选中“禁用未验证的RPC调用”框。此外,在private queue Properties | Security选项卡上,我们更改了安全性以授予每个人完全控制权。在我的例子中,这些机器在同一段上,但不在同一个域上。队列是非事务性的。我们正在为端点绑定(WCF)使用IP地址,NetBIOS/DNS不起作用。

我遇到了一个问题,我们有两台服务器向第三台服务器发送消息。只接收到一个服务器的消息。来自另一个队列的消息作为“未确认”卡在传出队列中

问题是因为所有计算机都是克隆的VM,并且在注册表项中具有相同的QMId:HKLM\Software\Microsoft\MSMQ\Parameters\Machine Cache。我们在服务器上重新安装了MSMQ,解决了问题

参考资料:


我也面临同样的问题。马克,你知道这件事的真相吗?我现在不记得了。无论如何,msmq有无数的问题,所以我们已经放弃了它。我的建议-远离它。我已经增加了一个悬赏,因为我们有同样的问题。即使在使用DIRECT=TCP时,这些消息也只是位于传出队列中。由于与MSMQ相关的所有问题,我们早就放弃了MSMQ。我的建议-照做。谢谢你的建议。由于没有人能提供帮助,即使是赏金,我们也最终放弃了MSMQ,转而支持RabbitMQ。始终会创建传出队列。我们早就放弃了MSMQ(好)、.NET(一般)和C#(感叹!),转而支持Java(:-()。但无论如何,还是要感谢。对我来说,这是为了确保两台计算机都可以使用NetBIOS名称进行ping。ThxTanks。在花费数小时试图解决类似问题(但我的MSMQ是公共的和事务性的)后,没有其他帮助。“禁用未经验证的RPC调用”是修复方法。我们看到了相同的问题。“禁用未经验证的RPC调用”已选中。取消选中此选项绕过了此问题。我们怀疑根本原因是某种网络级别的更改,但此更改使我们立即工作。所有传出队列立即将其消息发送到目标队列。这对我很有帮助,thanx!