【问题标题】:MSMQ transactional queue, in-order deliveryMSMQ 事务队列,按顺序交付
【发布时间】:2013-06-28 13:59:35
【问题描述】:

是否可以在 MSMQ 消息队列上强制按顺序接收?即我们希望以与发送消息相同的顺序接收消息。

编辑:如果有帮助:事务队列对我们来说很好。没有 DTC 会更好。

Edit2 - 一些额外的上下文:当用户向我们的数据库提交新数据(通过 Web 界面)时,我们的 Web 应用程序将事件发布到服务总线上(在后台使用 MSMQ)。总线上的侦听器现在应该按顺序接收消息,因为这对于一致性很重要(人在创建之前不能重命名......)。总线人员只是为每个点对点连接和订阅管理创建队列,但是,他们说底层队列负责按顺序传递事件。

【问题讨论】:

  • 仅供参考 - 这个post 没有得到任何回复。
  • 我知道,很难找到任何有关它的信息。有时我只找到非常旧的信息(7 岁及以上),所以我开始了一个新话题。希望没问题!
  • answer 可能有助于澄清您的问题。
  • 我添加了一些上下文,感谢您提供链接,但是,我没有看到与我们的上下文匹配...
  • 那么您的问题是 Web 应用程序没有按正确的顺序将事件发布到 MSMQ 吗?

标签: msmq


【解决方案1】:

确保消息按照从队列中读取的顺序到达队列的唯一方法是在一个事务中将它们全部发送。

您可以在事务之外发送多条消息,它们很可能确实会按照发送顺序到达队列中,但不能保证。因此,您需要编写错误处理代码来处理乱序情况。

【讨论】:

  • 这是一个不同的答案,正如我在最初发布的 mbeckish' cmets 之后所怀疑的那样。你确定你的信息吗?
  • 是的,非常有信心。在 Microsoft 从事 MSMQ 支持工作数年,并经常与产品组保持联络。尽管按顺序发送消息表面上看起来很容易,但重要的是幕后的管道。因此,我们谈论的是线路上的网络数据包及其重试机制和传输窗口,或者接收器上的 MSMQ 服务的多线程,这意味着理论上消息有可能相互超越。但在实践中,很难强迫它。
猜你喜欢
  • 2013-06-17
  • 2010-09-21
  • 1970-01-01
  • 1970-01-01
  • 2010-12-12
  • 2015-09-16
  • 2012-05-20
  • 1970-01-01
  • 2020-02-29
相关资源
最近更新 更多