<PackageReference Include="Polly.Core" Version="8.3.1" />

CircuitBreakerStrategyOptions<TResult>

The options for circuit breaker resilience strategy.
using Polly.Utils; using System; using System.ComponentModel.DataAnnotations; using System.Diagnostics.CodeAnalysis; using System.Runtime.CompilerServices; using System.Threading.Tasks; namespace Polly.CircuitBreaker { [System.Runtime.CompilerServices.NullableContext(2)] [System.Runtime.CompilerServices.Nullable(0)] public class CircuitBreakerStrategyOptions<TResult> : ResilienceStrategyOptions { [Range(0, 1)] public double FailureRatio { get; set; } = 0.1; [Range(2, int.MaxValue)] public int MinimumThroughput { get; set; } = 100; [Range(typeof(TimeSpan), "00:00:00.500", "1.00:00:00")] [System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessage("Trimming", "IL2026", Justification = "Addressed with DynamicDependency on ValidationHelper.Validate method")] public TimeSpan SamplingDuration { get; set; } = CircuitBreakerConstants.DefaultSamplingDuration; [Range(typeof(TimeSpan), "00:00:00.500", "1.00:00:00")] [System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessage("Trimming", "IL2026", Justification = "Addressed with DynamicDependency on ValidationHelper.Validate method")] public TimeSpan BreakDuration { get; set; } = CircuitBreakerConstants.DefaultBreakDuration; [System.Runtime.CompilerServices.Nullable(new byte[] { 2, 0 })] [field: System.Runtime.CompilerServices.Nullable(new byte[] { 2, 0 })] public Func<BreakDurationGeneratorArguments, ValueTask<TimeSpan>> BreakDurationGenerator { [return: System.Runtime.CompilerServices.Nullable(new byte[] { 2, 0 })] get; [param: System.Runtime.CompilerServices.Nullable(new byte[] { 2, 0 })] set; } [System.Runtime.CompilerServices.Nullable(new byte[] { 1, 0, 1, 0 })] [Required] [field: System.Runtime.CompilerServices.Nullable(new byte[] { 1, 0, 1, 0 })] public Func<CircuitBreakerPredicateArguments<TResult>, ValueTask<bool>> ShouldHandle { [return: System.Runtime.CompilerServices.Nullable(new byte[] { 1, 0, 1, 0 })] get; [param: System.Runtime.CompilerServices.Nullable(new byte[] { 1, 0, 1, 0 })] set; } = DefaultPredicates<CircuitBreakerPredicateArguments<TResult>, TResult>.HandleOutcome; [System.Runtime.CompilerServices.Nullable(new byte[] { 2, 0, 1 })] [field: System.Runtime.CompilerServices.Nullable(new byte[] { 2, 0, 1 })] public Func<OnCircuitClosedArguments<TResult>, ValueTask> OnClosed { [return: System.Runtime.CompilerServices.Nullable(new byte[] { 2, 0, 1 })] get; [param: System.Runtime.CompilerServices.Nullable(new byte[] { 2, 0, 1 })] set; } [System.Runtime.CompilerServices.Nullable(new byte[] { 2, 0, 1 })] [field: System.Runtime.CompilerServices.Nullable(new byte[] { 2, 0, 1 })] public Func<OnCircuitOpenedArguments<TResult>, ValueTask> OnOpened { [return: System.Runtime.CompilerServices.Nullable(new byte[] { 2, 0, 1 })] get; [param: System.Runtime.CompilerServices.Nullable(new byte[] { 2, 0, 1 })] set; } public Func<OnCircuitHalfOpenedArguments, ValueTask> OnHalfOpened { get; set; } public CircuitBreakerManualControl ManualControl { get; set; } public CircuitBreakerStateProvider StateProvider { get; set; } public CircuitBreakerStrategyOptions() { base.Name = "CircuitBreaker"; } } }