src/Coast.Core/EventBus/TransactionEventBus/TransactionalEnlistmentNotification.cs

(开头部分) 2KB

这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。

namespace Coast.Core.EventBus.TransactionEventBus
{
    using System;
    using System.Collections.Generic;
    using System.Transactions;
    using Microsoft.Extensions.Logging;

    public class TransactionalEnlistmentNotification :
        IEnlistmentNotification
    {
        readonly List<Action> _pendingActions;

        private readonly ILogger _logger;

        public TransactionalEnlistmentNotification(ILogger logger)
        {
            _pendingActions = new List<Action>();
            this._logger = logger;
        }

        public void Prepare(PreparingEnlistment preparingEnlistment)
        {
            _logger.LogDebug("Prepare notification received");

            try
            {
                ExecutePendingActions();

                //If work finished correctly, reply prepared
                preparingEnlistment.Prepared();
            }
            catch (Exception e)
            {
                _logger.LogError(e, "MassTransit: Error executing pending actions");

                preparingEnlistment.ForceRollback();
            }
        }

        public void Commit(Enlistment enlistment)
        {
            _logger.LogDebug("Commit notification received");

            DiscardPendingActions();

            enlistment.Done();
        }

        public void Rollback(Enlistment enlistment)
        {
            _logger.LogDebug("Rollback notification received");

            DiscardPendingActions();

            enlistment.Done();
        }

        public void InDoubt(Enlistment enlistment)
        {
            _logger.LogDebug("In doubt notification received");
后面还有 29 行代码,解锁后查看完整代码

24 小时内免费解锁 3 个项目,之后 1 积分/个。 规则说明

AI 解读

登录后可用,每次 10 积分,解读结果公开显示在下面。

还没有人解读过这个文件。