0
The Circuit Breaker pattern isolates failing services to prevent cascading failures throughout a system. When failures cross a specified threshold, the circuit 'opens' and immediately rejects further calls without calling the underlying service.
Configuring Circuit Breaker in Polly v8
You can configure an advanced circuit breaker using CircuitBreakerStrategyOptions.
Code Example
var pipeline = new ResiliencePipelineBuilder()
.AddCircuitBreaker(new CircuitBreakerStrategyOptions
{
ShouldHandle = new PredicateBuilder().Handle<Exception>(),
FailureRatio = 0.5,
SamplingDuration = TimeSpan.FromSeconds(10),
MinimumThroughput = 8,
BreakDuration = TimeSpan.FromSeconds(30)
})
.Build();
try
{
await pipeline.ExecuteAsync(async token =>
{
await ExternalServiceCallAsync(token);
});
}
catch (BrokenCircuitException ex)
{
// Handle open circuit gracefully
}Circuit States
- Closed: Normal operation, requests pass through.
- Open: Circuit broken, requests fail fast.
- Half-Open: Trial state testing if downstream service recovered.