当用户没有队列权限时发送的 MSMQ 消息会发生什么情况

当用户没有队列权限时发送的 MSMQ 消息会发生什么情况

进行一些测试后发现,如果我尝试向用户被拒绝“发送消息”权限的队列发送消息,则发送的消息会消失。它不会出现在死信队列、传出队列或我想查看的任何其他地方。发送消息时也不会抛出任何类型的异常。

这条消息是怎么回事?它真的被吃掉了吗?还是我错过了什么?

这是我用来发送消息的代码:

var q = new MessageQueue(@"[ComputerName]\Test"); 
q.Send("foo"); 

答案1

默认情况下,MSMQ 将丢弃因任何原因无法传递的所有消息。除非您发送到本地计算机,否则不会出现错误消息。

发送到远程计算机时,如果您无法将消息放入传出队列,则只会收到错误消息,这无助于将消息传递到远程队列。发送到本地计算机时,没有传出队列机制,本地队列管理器将尝试将消息直接放入所需队列,因此您可能会收到错误消息。

您需要启用负面源日志记录,以便将消息的副本放入相应的死信队列,这样您就可以找出未送达的原因。

欢呼
John Breakwell

答案2

简而言之...如果您没有权限向该队列发送消息...您应该会收到一条错误消息,无论您使用哪种方法尝试发送消息。如果您不检查它,消息就会被扔进永恒的位桶中,无法检索。如果没有更多关于您使用什么向队列发送消息的信息...我甚至无法开始帮助您解决问题。

相关内容