public ChildStepsTests()
        {
            IServiceCollection services = new ServiceCollection();

            services.AddSaga(cfg =>
            {
#if SQL_SERVER
                cfg.UseSqlServer(new SqlServerOptions()
                {
                    ConnectionString = "data source=lab16;initial catalog=ziarno;uid=dba;pwd=sql;"
                });
                cfg.UseDistributedLock(new SqlServerLockingOptions()
                {
                    ConnectionString = "data source=lab16;initial catalog=ziarno;uid=dba;pwd=sql;"
                });
#endif
            });

            IServiceProvider serviceProvider = services.BuildServiceProvider();

            sagaPersistance = serviceProvider.
                              GetRequiredService <ISagaPersistance>();

            sagaCoordinator = serviceProvider.
                              GetRequiredService <ISagaCoordinator>();

            sagaLocking = serviceProvider.
                          GetRequiredService <ISagaLocking>();
        }
        private async Task OnSagaProcessingStart(ExecutionStartMessage msg)
        {
            ISagaLocking sagaLocking = serviceProvider.GetRequiredService <ISagaLocking>();

            if (!await sagaLocking.Acquire(msg.SagaID))
            {
                throw new SagaIsBusyException(msg.SagaID);
            }
        }
Exemplo n.º 3
0
        private async Task OnSagaProcessingEnd(ExecutionEndMessage msg)
        {
            ISagaLocking sagaLocking = serviceProvider.GetRequiredService <ISagaLocking>();
            var          id          = msg?.Saga?.Data?.ID;

            if (id == null)
            {
                return;
            }

            await sagaLocking.Banish(id.Value);
        }
Exemplo n.º 4
0
        private async Task OnSagaProcessingStart(ExecutionStartMessage msg)
        {
            ISagaLocking sagaLocking = serviceProvider.GetRequiredService <ISagaLocking>();
            var          id          = msg?.Saga?.Data?.ID;

            if (id == null)
            {
                return;
            }

            if (!await sagaLocking.Acquire(id.Value))
            {
                throw new SagaIsBusyException(id.Value);
            }
        }
        private async Task OnSagaProcessingEnd(ExecutionEndMessage msg)
        {
            ISagaLocking sagaLocking = serviceProvider.GetRequiredService <ISagaLocking>();

            await sagaLocking.Banish(msg.SagaId);
        }