I have to create a
MSMQ messaging mechanism between two servers in the same domain,
SenderServer (MS Server 2012) and
ReceiverServer (MS Server 2008 R2).
I created a private, transactional queue in
ReceiverServer .\private$\receiver, I gave receive (and peek) message rights to system and administrators.
I then created a client application that creates and forwards messages to the queue by using the following code:
MessageQueue queue = new queue("FormatName:Direct=OS:ReceiverServer\private$\receiver");
Message message = new Message();
message.Body = "myMessage";
using (MessageQueueTransaction tx = new MessageQueueTransaction())
{
tx.Begin();
queue.Send(message, "myLabel", tx);
tx.Commit();
}
Before deploying the application, I tested it from my machine (Windows 7) that correctly creates an outgoing queue
Direct=OS:ReceiverServer\private$\receiver with
State:Connected and
Connection History:Connection is ready to transfer messages.
The messages are correctly sent to the
ReceiverServer and placed in the
\private$\receiver queue. The
End2End log of the
ReceiverServer for every message logs two events:
1. Message came over network (EventId: 4)
2. Message with `ID CN=msmq, CN=[mymachinename], CN=Computers, DC=[domain], DC=[other]` was put into queue `ReceiverServer\private$\receiver` (EventId: 1)
Then I used the client application from within the
SenderServer using the same code. The server correctly creates an outgoing queue
Direct=OS:ReceiverServer\private$\receiver with
State:Connected and
Connection History:Connection is ready to transfer messages, I can see the message queuing up and be sent but I do not receive them in the remote *ReceiverServer* queue `.\private$\receiver`. If I check the *End2End event log* of the *ReceiverServer*
I just see the first message (Message came over network (EventId: 4)) but the message is not placed in the queue.
I turned off firewalls from both machines, changed the authorization settings for the queue and tried the following endpoint for the queues:
- `FormatName:Direct=OS:[IPv6 address]\private$\receiver`
- `FormatName:Direct=TCP:ReceiverServer\private$\receiver`
- `FormatName:Direct=TCP:[IPv6 address]\private$\receiver`
With no luck. The troubleshooting process and the documentation from Microsoft are really general and simplistic, therefore I decided to ask here because for me is a dead end.