问题
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
回答1:
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.
回答2:
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.
来源:https://stackoverflow.com/questions/6469095/msmq-messages-received-but-not-delivered-windows-2008-r2