【问题标题】:transactional vs. non-transactional msmq事务性与非事务性 msmq
【发布时间】:2010-12-08 21:42:43
【问题描述】:

我一直看到documentation 说它不可能发送到事务范围之外的远程事务性 msmq 队列。我觉得这很难相信,因为我认为我已经这样做了好几个星期了。我有一个小应用程序,可以将消息发布到一个事务性的远程队列。只是为了试验性能,各种版本的客户端要么使用 TransactionScope 来包装发送操作,要么不使用。最终,使用一些补偿事务逻辑似乎更智能、更快,因此在客户端和服务器上都放弃了使用 TransactionScope。问题是,消息似乎仍然出现在队列中,并且可以毫无问题地被服务处理。

谁能向我解释我在这里缺少什么?我只是厚吗?随意说出来(这肯定不会是第一次)。

【问题讨论】:

    标签: msmq


    【解决方案1】:

    您使用 TransactionScope 引用的事务由 dtc(分布式事务协调器)实现。 msmq(如 sql)有它的内部事务引擎。消息中有一个属性表明它是事务性消息。你可能在代码中的某个地方设置了它。

    【讨论】:

      【解决方案2】:

      这取决于您使用的 MSMQ 版本。只有 MSMQ 4.0 及更高版本(Vista、7、Server 2008)可以进行远程事务读取。并且您正确使用了 TransactionScope,因为必须使用 DTC。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-02-28
        • 2018-04-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多