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

时间:2017-07-18 16:02:45

标签: c# message-queue msmq

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

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

我拥有的实际C#代码相当简单,老实说,我真的认为这不是问题。 (它是一个带有POSTed对象的webapi,只是把它推到队列中。)

我可以毫无问题地将这些消息从Dev发送到B(同时登录到域管理员帐户),我可以检查消息的正文。但是我无法将消息从A发送到B.B上的私人队列设置为允许"每个人" "完全控制"权限。

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

1 个答案:

答案 0 :(得分:0)

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

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

我们将帐户切换到NetworkService,它运作正常。