已接收但未传送 MSMQ 消息 Windows 2008 R2
我有一个名为 myPrivateTransactionalQueue 的事务队列,托管在名为 myReceivingServer 的 Win2008R2 服务器上,该服务器应该从另一个名为 mySendingServer 的服务器接收消息。当 mySendingServer 发送消息时,mySendingServer 上的 MSMQ 日志中会出现一个条目,其中显示:
Message with ID {f748cc48-8017-4a64-9ff6-61c68564445f}\56008 was sent to queue DIRECT=OS:<myReceivingServerName >\private$\<myPrivateTransactionalQueue>
然而,myReceivingServer,MSMQ 日志中只有一个条目:
Message came over network
然而,消息并未传递到 myReceivingServer 上的 myPrivateTransactionalQueue。到目前为止我所查看的内容:
- myReceivingServer 上的应用程序事件日志没有错误
- 在 myPrivateTransactionalQueue 上,“每个人”和“匿名登录”都被授予完全控制
- myReceivingServer 上的事务死信队列为空
- mySendingServer 上的临时传出队列为空
我要去一下我很紧张,因为我根本无法解释这个消息。任何帮助将不胜感激。
编辑:我找到了这个链接 http://blogs.msdn.com/b/johnbreakwell/archive/2010/01/22/why-does-msmq-keep-losing-my-messages.aspx 所以我会看看这是否可以解释我的问题。将以任何解决方案发回。
Edit2:好吧,我讨厌这个,但问题就这样自行解决了。我没有更改上述配置中的任何内容。但我现在已经可以使用了。
Edit3:这是来自 John Breakwell 的评论:为了确保您再次看到此问题时知道根本原因(并且没有理由相信它已经一去不复返了),您需要启用一些选项,例如负源日志我的博客中提到过。现在您知道您的系统没有弹性,现在是修复它的好时机
I have a transactional queue called myPrivateTransactionalQueue hosted on a Win2008R2 server called myReceivingServer which should receive messages from another server called mySendingServer. When the mySendingServer sends a message, an entry appears in the MSMQ log on mySendingServer which says:
Message with ID {f748cc48-8017-4a64-9ff6-61c68564445f}\56008 was sent to queue DIRECT=OS:<myReceivingServerName >\private$\<myPrivateTransactionalQueue>
However, myReceivingServer, in the MSMQ log there is a single entry:
Message came over network
However the message is not being delivered to myPrivateTransactionalQueue on myReceivingServer. Things I have looked at so far:
- Application event log on myReceivingServer has no errors
- On myPrivateTransactionalQueue "Everyone" and "Anonymous Logon" are granted Full Control
- Transactional dead letter queue on myReceivingServer is empty
- Temporary outgoing queue on mySendingServer is empty
I am going a bit mental here because I cannot account for the message at all. Any help would be much appreciated.
Edit: I found this link http://blogs.msdn.com/b/johnbreakwell/archive/2010/01/22/why-does-msmq-keep-losing-my-messages.aspx so I will see if this explains my problem. Will post back with any resolution.
Edit2: OK I hate this but the problem just kind of sorted itself out. I didn't change anything in the above configuration. But I now have it working.
Edit3: This is a comment from John Breakwell: To ensure you know the root cause when you see this problem again (and there's no reason to believe it has gone for good), you need to enable some options, such as negative source journaling as mentioned in my blog. Now you know your system isn't resilient, it's a good time to fix it
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
好吧,我遇到了完全相同的问题,并且由于两个原因它自行解决了。我更新了我发送的消息中引用的计算机名称(以前它是我的主机中的别名),或者可能只是因为我在接收服务器上启用了对每个人/匿名的完全控制并重新启动了计算机。
Ok I had exactly the same problem and it either resolved itself because of two reasons. I updated the computer name referenced in the message I was sending (previously it was an alias in my hosts) or it could have just been the fact that I enabled full control to everyone/anonymous on the receiving server and rebooted the machine.
检查发件人死信队列以获取线索。
就我而言,在检查发件人死信队列后,我发现这是一个权限问题。
当队列未经身份验证时,向“所有人”授予权限是不够的,但“匿名登录”还必须至少具有发送权限。
Check the sender dead letter queue for a clue.
On my case, after checking the sender dead letter queue I was able to identify that it was a permissions issue.
When the queue is unauthenticated it is not enough to give permissions to "everyone" but "anonymouns logon" must also be there with at least send permissions.