无法接收msmq消息

时间:2012-02-03 14:33:34

标签: windows-xp msmq

我在使用msmq的应用程序时遇到问题:在特定计算机上,此应用程序可以发送msmq消息,但似乎没有收到任何消息。

这只发生在特定的机器上(使用XP)。

如何调试问题?我在哪里可以找到问题所在的线索以及原因?

在远程计算机上,邮件卡在传出队列中。

这台机器曾经能够接收消息,有一天它停止工作。机器上发生的事情并不明显,这可能与接收消息的能力丧失有关。

我已检查端口1801是否已打开。

(我在事件查看器中找不到任何内容)

4 个答案:

答案 0 :(得分:1)

当您说“接收”消息时,您是说您无法从队列中删除消息,还是没有消息可以传送到本机?

最常见的原因是权限 - 最简单的测试就是为每个人和匿名登录设置完全控制。

=== 2月4日====

如果消息卡在传出队列中,则队列状态很重要 如果它是“已连接”,则问题在于让目标队列管理器接受消息。
如果它是“等待连接”或类似的,那么在网络连接级别存在问题。

由于消息等待传递,因此没有错误状态,因此这里没有日志记录会有所帮助。 MSMQ期望消息被延迟,因此这里没有任何错误,因为假设在将来的某个时刻阻塞将被清除。最终,除非您使用负源日记,否则消息将超时并被丢弃。

=== 2月8日====

好的,如果“DIRECT = TCP:1.2.3.4 \ Private $ \ MyQueue”有效,但“DIRECT = OS:servername \ Private $ \ MyQueue”不起作用,那么它看起来像名称解析问题。
检查发送机器是否有用于名称解析的DNS服务器的IP地址;检查此服务器以获取目标计算机名称的条目。在发送计算机上,检查HOSTS和LMHOSTS文件以查找目标计算机名称的任何条目。您甚至可以尝试向HOSTS添加一个条目,将目标计算机名称映射到IP地址。

干杯
John Breakwell

答案 1 :(得分:1)

Receiver正在侦听1801,但是发件人可以连接到该端口吗?在发件人上,转到命令行并执行:telnet receiverHostName 1801
这将检查是否可以打开该端口的连接。也许防火墙或其他软件阻止流量?

答案 2 :(得分:0)

调试邮件排队问题:

  • 使用应用程序检查计算机和队列。建议自己编写,或类似QueueExplorer demo之类的东西。这是确定问题性质的最快方法:端点权限/安全性,网络,格式错误的消息等。

  • 在发送方端实现日志记录。也许坏接收者返回错误消息,或者发送者可能无法建立连接,或者消息可能太大。

答案 3 :(得分:0)

我通常在网络服务下运行应用程序,并为此用户为队列设置完全权限。如果我有桌面端点,请尝试连接到网络服务用户的消息。

尝试它可能有用。