MSMQ消息永远不会交付 - 暂停时出站

问题描述:

我有3台机器,我们称他们为A,B(两台服务器)和Dev(我的本地机器)。MSMQ消息永远不会交付 - 暂停时出站

我想从A发送一个消息队列项B.

实际的C#代码,我有相当简单,说实话,我真的不认为这是问题就在这里。 (这是一个webapi,它接受一个POST的对象并将其推入队列中)。

我可以发送这些消息很好从开发到B(虽然登录到域管理员帐户)没有问题,我可以检查邮件的正文。但是,我无法将消息从A发送到B.B上的专用队列设置为允许“Everyone”为“完全控制”权限。

如果我暂停A上的出站队列并发送消息,它们位于出站队列中,并且正文与我预期的完全相同,但是当我再次恢复出站队列时,它们永远不会收到另一端在B.

我无法弄清楚我的生活发生了什么。我尝试了'TCP'方法,但我需要通过机器名称而不是IP来引用我的队列。

作为参考,用来发送消息的代码是:

using (var queue = new MessageQueue($"FormatName:Direct=OS:MachineB\\private$\\Queue")) 
      { 
       var queueItem = new QueueItem(); 
       queueItem.Object = this.postedObject; 

       var message = new System.Messaging.Message(queueItem); 
       queue.Send(message); 
      } 
+0

A和B都在同一个域上吗?另外,B上的队列是事务性还是非事务性队列? –

+0

@tomredfern它们都在同一个域中(与Dev一起),它们都是非事务性的:) – Seb

+0

在两台服务器上打开MSMQ的E2E跟踪。 https://technet.microsoft.com/en-us/library/cc730882(v=ws.11).aspx。这应该告诉你到底发生了什么。 –

参考,其他人谁遇到这样的:

该项目将消息发送到队列是的WebAPI。它在IIS中的AppPoolIdentity帐户下运行,尽管接收队列允许Everyone访问,但它正在拒绝这些消息,但优雅。所以webapi会触发信息,不会抛出任何异常,它会触发出站,但永远不会到达。

我们将帐户切换到NetworkService,它工作得很好。