Msmq.NET api MessageQueue.Send未在预期位置引发
本文关键字:位置 NET api MessageQueue Send Msmq | 更新日期: 2023-09-27 18:21:11
我是Msmq的新手,不了解事务的工作方式。
所以,假设我有一个事务性队列,并且我向它发送一条消息,而不指定该方法不抛出的任何事务,并且该消息不去任何地方。文件上写着-
"如果使用此重载将消息发送到事务队列,则消息将发送到死信队列"
但是,我在系统队列中的任何位置都看不到该消息。
这是参考代码-
var path = @".'private$'transactionalQ";
if (MessageQueue.Exists(path))
MessageQueue.Delete(path);
var q = MessageQueue.Create(path, false);
q.Send("non transactional message");
当将事务性消息发送到非事务性队列时,我看到了类似的行为。
如果我正在做一些意外的事情,我希望方法调用会抛出。我是不是错过了什么?
你做得很好,但在MessageQueue.Send方法中没有任何区分过渡消息和非过渡消息的工具。消息队列.发送(对象)方法并没有为单个参数而不是Object(我指的是任何专用类型)重载,所以解决方案是,您必须首先检查消息的格式是否正确,然后将其传递到队列。此外,只有一个与发送方法相关的异常是MessageQueueException,它是由于您提供的无效路径以及访问消息队列API时发生的错误而生成的。有关更多信息,您可以访问此链接以及MSDN文章。