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); } }
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); }
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); }