Custom Resilience Strategies
Add custom Polly-based resilience strategies and retry diagnostics to Elsa 3.8.0 workflows.
How the pieces fit together
Implement a strategy
using Elsa.Resilience;
using Polly;
using Polly.CircuitBreaker;
public sealed class PaymentsCircuitBreaker : IResilienceStrategy
{
public string Id { get; set; } = null!;
public string DisplayName { get; set; } = null!;
public double FailureRatio { get; set; } = 0.5;
public int MinimumThroughput { get; set; } = 10;
public TimeSpan SamplingDuration { get; set; } = TimeSpan.FromSeconds(30);
public TimeSpan BreakDuration { get; set; } = TimeSpan.FromSeconds(15);
public Task ConfigurePipeline<T>(
ResiliencePipelineBuilder<T> pipelineBuilder,
ResilienceContext context)
{
pipelineBuilder.AddCircuitBreaker(new CircuitBreakerStrategyOptions<T>
{
FailureRatio = FailureRatio,
MinimumThroughput = MinimumThroughput,
SamplingDuration = SamplingDuration,
BreakDuration = BreakDuration,
ShouldHandle = new PredicateBuilder<T>().Handle<Exception>()
});
return Task.CompletedTask;
}
}Register the type and configure an instance
Modular shell hosts
Make a custom activity use the pipeline
Retry-attempt recording
Add diagnostics without losing Studio history
Troubleshooting checklist
Symptom
Check
Source references
Last updated