【问题标题】:TransactionAbortedException when masstransit receives messagemasstransit 收到消息时的 TransactionAbortedException
【发布时间】:2016-04-28 18:14:13
【问题描述】:

几天来,我对 TransactionScope 有疑问。错误信息如下:

MassTransit.Context.ServiceBusReceiveContext Consumer Exception Exposed System.Transactions.TransactionAbortedException: The transaction has aborted.
   at System.Transactions.TransactionStatePromotedAborted.CreateAbortingClone(InternalTransaction tx)
   at System.Transactions.DependentTransaction..ctor(IsolationLevel isoLevel, InternalTransaction internalTransaction, Boolean blocking)
   at System.Transactions.Transaction.DependentClone(DependentCloneOption cloneOption)
   at System.Transactions.TransactionScope.SetCurrent(Transaction newCurrent)
   at System.Transactions.TransactionScope.PushScope()
   at System.Transactions.TransactionScope..ctor(TransactionScopeOption scopeOption, TransactionOptions transactionOptions, TransactionScopeAsyncFlowOption asyncFlowOption)
   at MassTransit.Transports.Msmq.TransactionalInboundMsmqTransport.ReceiveMessage(MessageEnumerator enumerator, TimeSpan timeout, Action`1 receiveAction) in d:\BuildAgent-03\work\aa063b4295dfc097\src\Transports\MassTransit.Transports.Msmq\TransactionalInboundMsmqTransport.cs:line 48
   at MassTransit.Transports.Msmq.InboundMsmqTransport.<>c__DisplayClass2.<EnumerateQueue>b__0(MessageQueueConnection connection) in d:\BuildAgent-03\work\aa063b4295dfc097\src\Transports\MassTransit.Transports.Msmq\InboundMsmqTransport.cs:line 96
   at MassTransit.Transports.DefaultConnectionPolicy.Execute(Action callback) in d:\BuildAgent-03\work\aa063b4295dfc097\src\MassTransit\Transports\DefaultConnectionPolicy.cs:line 42
   at MassTransit.Transports.ConnectionPolicyChainImpl.Next(Action callback) in d:\BuildAgent-03\work\aa063b4295dfc097\src\MassTransit\Transports\ConnectionPolicyChainImpl.cs:line 50
   at MassTransit.Transports.ConnectionHandlerImpl`1.Use(Action`1 callback) in d:\BuildAgent-03\work\aa063b4295dfc097\src\MassTransit\Transports\ConnectionHandlerImpl.cs:line 93
   at MassTransit.Transports.Msmq.InboundMsmqTransport.EnumerateQueue(Func`2 receiver, TimeSpan timeout) in d:\BuildAgent-03\work\aa063b4295dfc097\src\Transports\MassTransit.Transports.Msmq\InboundMsmqTransport.cs:line 119
   at MassTransit.Transports.Msmq.InboundMsmqTransport.Receive(Func`2 callback, TimeSpan timeout) in d:\BuildAgent-03\work\aa063b4295dfc097\src\Transports\MassTransit.Transports.Msmq\InboundMsmqTransport.cs:line 45
   at MassTransit.Transports.Transport.Receive(Func`2 callback, TimeSpan timeout) in d:\BuildAgent-03\work\aa063b4295dfc097\src\MassTransit\Transports\Transport.cs:line 59
   at MassTransit.Transports.Endpoint.Receive(Func`2 receiver, TimeSpan timeout) in d:\BuildAgent-03\work\aa063b4295dfc097\src\MassTransit\Transports\Endpoint.cs:line 351
   at MassTransit.Context.ServiceBusReceiveContext.ReceiveFromEndpoint() in d:\BuildAgent-03\work\aa063b4295dfc097\src\MassTransit\Context\ServiceBusReceiveContext.cs:line 91

队列清晰,意味着下次交易成功(我认为)。 没有相关的堆栈跟踪。也许ThreadPooling可能与此有关?

这个错误开始突然出现,有几天了。负责处理事务的代码没有变化。

我需要帮助。有人吗?

更新 1:

此异常在生产服务器上引发,但我无法在暂存服务器或开发机器上重现它。

更新 2:

所有事务都是本地的。

【问题讨论】:

    标签: exception msmq transactionscope masstransit


    【解决方案1】:

    这听起来像是 Microsoft DTC(分布式事务协调器)的问题,在这种情况下,您可能在读取消息时使用到 SQL 服务器的连接,并且该连接无法加入分布式事务。

    有许多与 MS DTC 相关的故障排除指南,因此您可以查看检查 DTC 操作、安全性和连接性。帐户可能已过期、防火墙规则已更改或服务未在其中一个节点上启动。

    【讨论】:

    • 谢谢,但没有其他节点,我不使用 DTC。与数据库的连接具有 Enlist = false 语句。
    • 问题出在有缺陷的 StructureMap 中。升级后一切正常。
    【解决方案2】:

    问题出在有缺陷的 StructureMap 中。升级后一切正常。

    【讨论】:

      猜你喜欢
      • 2012-12-13
      • 2013-03-08
      • 2020-10-25
      • 2023-03-28
      • 1970-01-01
      • 1970-01-01
      • 2017-11-18
      • 1970-01-01
      相关资源
      最近更新 更多