MSMQ消息在到达远程服务器时消失

Cic*_*ami 2 msmq system.messaging

我必须在同一域中的两个服务器之间创建MSMQ消息传递机制,SenderServer(MS Server 2012)和ReceiverServer(MS Server 2008 R2).

我在ReceiverServer中 创建了一个私有的事务性队列.\private$\receiver,我向系统和管理员提供了接收(和查看)消息权限.

然后,我创建了一个客户端应用程序,使用以下代码创建消息并将消息转发到队列:

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

在部署应用程序之前,我在我的机器(Windows 7)上测试了它,它Direct=OS:ReceiverServer\private$\receiver使用State:Connected和正确地创建了一个传出队列Connection History:Connection is ready to transfer messages.消息被正确发送到ReceiverServer并放入\private$\receiver队列中.在End2End log该的ReceiverServer为每封邮件记录两个事件:

  1. 消息来自网络(EventId:4)
  2. 消息ID CN=msmq, CN=[mymachinename], CN=Computers, DC=[domain], DC=[other]已被放入队列ReceiverServer\private$\receiver(EventId:1)

然后我使用相同的代码在SenderServer中使用客户端应用程序.服务器Direct=OS:ReceiverServer\private$\receiver使用State:Connected和正确创建一个传出队列Connection History:Connection is ready to transfer messages,我可以看到消息排队并发送但我没有在远程ReceiverServer队列中收到它们.\private$\receiver.如果我检查ReceiverServerEnd2End事件日志,我只看到第一条消息(消息来自网络(EventId:4)),但消息未放入队列中.

我关闭了两台机器的防火墙,更改了队列的授权设置,并为队列尝试了以下端点:

  • FormatName:Direct=OS:[IPv6 address]\private$\receiver
  • FormatName:Direct=TCP:ReceiverServer\private$\receiver
  • FormatName:Direct=TCP:[IPv6 address]\private$\receiver

没有运气.Microsoft的故障排除过程和文档非常简洁,因此我决定在这里问一下,因为对我来说是一个死胡同.

tom*_*ern 5

发件人域帐户需要在远程队列上具有以下权限:发送,获取权限,获取属性

这些机器在同一个域上吗?如果不是,您可能需要将上述权限授予名为ANONYMOUS LOGON的本地用户