MSMQ 消息永远不会被传送 - 暂停时坐在出站中

MSMQ Messages Never Get Delivered - Sit in outbound when paused

我有 3 台机器,我们称它们为 A、B(两台服务器)和 Dev(我的本地机器)。

我想将消息队列项从 A 发送到 B。

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

我可以毫无问题地将这些消息从 Dev 发送到 B(同时登录到域管理员帐户),并且我可以检查消息的正文。但是我无法将消息从 A 发送到 B。B 上的专用队列设置为允许 "Everyone" "Full Control" 权限。

如果我暂停 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);
            }

供参考和遇到此问题的任何其他人:

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

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