public async Task Run( IStreamEvents streamEvents, IProjectEvents projection, Action <Exception> handleException, CancellationToken ct) { var delay = Backoff.DecorrelatedJitterBackoffV2( medianFirstRetryDelay: _config.FirstRetryDelay, retryCount: _config.RetryCount); await Policy .Handle <ApertureProjectionException>() .WaitAndRetryAsync(delay, (ex, _) => handleException(ex)) .ExecuteAsync( async() => await projection.ProjectAsync(streamEvents, ct)); }
private async Task ProjectEventsAsync(IProjectEvents projection, List <IEvent> events) { var eventStream = new EventStream(events); await projection.ProjectAsync(eventStream, CancellationToken.None); }
public virtual async Task Run( IStreamEvents streamEvents, IProjectEvents projection, Action <Exception> handleException, CancellationToken ct) => await projection.ProjectAsync(streamEvents, ct);