MSMQ消息被困在传出队列中

mar*_*ark 17 .net msmq

虽然我的问题与SO上已经发现的问题类似,但这些帖子对我没有帮助,所以这里是:

鉴于:

  • 同一网段上的两台计算机(自然位于同一网域,实际位于同一桌面)
  • 这两台机器都是Windows 7工作站
  • 两台机器都禁用了防火墙
  • 两台机器互相看见(ping工作)
  • 其中一个上有一个私有的非事务性消息队列测试.
  • 发件人机器有 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSMQ\SimpleClient\@BinaryEnabled = 'Yes'
  • 队列所有者从另一台计算机发送消息
  • 邮件卡在传出队列上,永远不会到达目标.
  • 当从同一台机器(即本地)发送时,消息到达OK.

使用以下代码发送消息:

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));
Run Code Online (Sandbox Code Playgroud)

其中il-mark-lap是带队列的机器的地址.

为了使这件事有效,我该怎么做?

非常感谢.

Bla*_*ICE 8

我想我找到了这个问题的答案,我遇到了似乎是同样的问题,但是我没有在没有向客户端发送消息10分钟后卡住了.看看这篇知识库文章,它可能会对你有所帮助.此外,在我的情况下,它与重新启动无关,所以不要让你失望,我确实展示了netstat中的症状,并且当客户端首次启动时,消息最初会通过.

http://support.microsoft.com/kb/2554746


Kar*_*rie 6

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

从Microsoft 获取DTCPing实用程序,在使用MSMQ的计算机上运行它,DTC必须能够相互通信才能使MSMQ正常工作.

使用DTCPing工具解决MSDTC问题

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

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

在我的情况下,一旦我得到DTC与NetBIOS名称解析 - 重新启动服务 - 一切都开始神奇地工作.

我强烈建议您访问此页面以获取更多资源.


Gro*_*Src 6

我今天遇到了这个问题.要解决此问题,我们必须打开接收服务器的消息队列属性对话框,并在"服务器安全性"选项卡上取消选中"禁用未经过身份验证的RPC调用"复选框.此外,在私有队列属性| 安全选项卡我们更改了安全性以授予Everyone完全控制权.在我的情况下,机器在同一个网段上,但不在同一个网域上.该队列是非事务性的.我们使用IP地址作为端点绑定(WCF),NetBIOS/DNS不在使用中.


小智 0

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

  • 总是创建传出队列。 (3认同)