private static AsyncPolicy Create(string description, DataMoverSettings settings, ILogger logger) { var breaker = Policy .Handle <Exception>() .CircuitBreakerAsync( exceptionsAllowedBeforeBreaking: 5, durationOfBreak: TimeSpan.FromSeconds(3)); var retry = Policy .Handle <Exception>() .WaitAndRetryAsync(Backoff.LinearBackoff( TimeSpan.FromSeconds(settings.RetryInitialDelaySeconds), settings.RetryCount), (exception, span, retryCount, context) => { logger.LogError( exception, "{@EventType} {@Realm} {@TimeSpan} {@retryCount}", "Retry", description, span, retryCount); }); return(Policy.WrapAsync(retry, breaker)); }
public DatabasePublisher( ILogger <DatabasePublisher> logger, PolicyFactory policyFactory, DataMoverSettings dataMoverSettings) { _logger = logger; _policyFactory = policyFactory; _dataMoverSettings = dataMoverSettings; }
public SchemaCopier( DataMoverSettings dataMoverSettings, PolicyFactory policyFactory, ILogger <SchemaCopier> logger) { _dataMoverSettings = dataMoverSettings; _policyFactory = policyFactory; _logger = logger; }
public SourceDataReader(PolicyFactory policyFactory, DataMoverSettings dataMoverSettings) { _policyFactory = policyFactory; _dataMoverSettings = dataMoverSettings; }
public PolicyFactory(DataMoverSettings settings, ILogger <PolicyFactory> logger) { SrcPolicy = Create("src", settings, logger); DstPolicy = Create("dst", settings, logger); }