Msmq .NET api MessageQueue.Send 不会在预期的地方抛出

发布于 2024-12-28 19:24:48 字数 523 浏览 0 评论 0原文

我对 Msmq 相当陌生,我不了解事务的工作方式。

因此,假设我有一个事务队列,并且我向它发送一条消息,但没有指定任何事务,该方法不会抛出该消息,并且该消息无处可去。文档说 -

“如果您使用此重载将消息发送到事务队列,该消息将被发送到死信队列”。

但是我不能'在系统队列中的任何位置都看不到该消息。

这是供参考的代码 -

  var path = @".\private$\transactionalQ";
  if (MessageQueue.Exists(path))
    MessageQueue.Delete(path);
  var q = MessageQueue.Create(path, false);

  q.Send("non transactional message");

我在将事务性消息发送到非事务性队列时看到类似的行为。

如果我做了一些意想不到的事情,我预计方法调用会抛出异常。我错过了什么吗?

I am fairly new to Msmq, and I am not understanding the way the transactions work.

So, say I have a transactional queue and I send a message to it without specifying any transaction the method does not throw and the message goes nowhere. The documentation says -

'If you use this overload to send a message to a transactional queue, the message will be sent to the dead-letter queue'.

However I couldn't see the message anywhere in the system queues.

This the code for reference -

  var path = @".\private$\transactionalQ";
  if (MessageQueue.Exists(path))
    MessageQueue.Delete(path);
  var q = MessageQueue.Create(path, false);

  q.Send("non transactional message");

I see a similar behaviour when sending transactional messages to a non-transactional queue.

I expected the method call to throw if I was doing something unexpected. Am I missing something?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

早茶月光 2025-01-04 19:24:48

您的做法是正确的,但在 MessageQueue.Send 方法中没有任何工具可以区分过渡消息和非过渡消息。
MessageQueue.Send(对象)
方法对于单个参数而不是对象(我的意思是任何专门的类型)不会重载,因此解决方案是您必须首先检查消息的格式是否正确,然后必须将其传递到队列。
此外,只有一个与发送方法相关的异常是 MessageQueueException ,它是由于您提供的路径无效以及访问消息队列 API 时发生错误而生成的。
有关详细信息,您可以通过 此链接
还有MSDN 文章

Your going right but there is no any facility to differentiate Transitional message and non transitional message in MessageQueue.Send Method.
MessageQueue.Send(Object)
method is not overloaded for single parameter rather than Object (I mean any specialized Type) So the solution is you have to First Check Message is in Correct format or not then you have to pass it to queue.
Also there only one exception related with Send Method is MessageQueueException and which is generated due to invalid path which you provide and error occurred when accessing a Message Queuing API.
For more information you can go through this link
and also MSDN article .

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文