“火和忘记”异步内部分布式事务

时间:2017-11-16 16:45:16

标签: c# sql-server transactions msdtc

我们在将同步调用转换为异步时引入了代码中的错误。从本质上讲,我们对基础设施(MSMQ)的异步调用尚未等待。我们看到了问题,并知道如何解决它。

皱纹是这个调用发生在TransactionScope / Distributed Transaction中。在调用scope.Complete()之前没有等待动作的情况下,我不清楚基础结构实际上在做什么。

交易是否永远不会升级为分布式交易?异步语句是否在单独的线程上执行,因此不参与环境事务?

        using (var scope = new TransactionScope())
        {
            _someService.PerformDatabaseAction(SomeType someType);

            //this call is async, but we don't await it
            _someOtherService.WriteToMsmqAsync(SomeOtherType someOtherType);

            scope.Complete();
        }

我相信如果第二个语句被登记并且调用了scope.Complete(),那么事务将回滚,因为事务中的所有参与者还没有准备好提交?

0 个答案:

没有答案
相关问题