.NET 7 + Polly: implementando o padrão Circuit Breaker no tratamento de falhas
Neste novo post trago um exemplo de implementação do padrão Circuit Breaker em .NET 7, fazendo uso para isto da biblioteca Polly em um Worker Service que consome uma API REST criada com o ASP.NET Core.
O repositório com este exemplo foi disponibilizado no GitHub:
https://github.com/renatogroffe/DotNet7-Worker-Polly-CircuitBreaker_ConsumoAPIContagem
Caso achem útil esta solução, peço por favor um ⭐️ no repositório apoiando. Fica também o convite para que vocês me sigam lá no GitHub!
Importante destacar que este mesmo exemplo já foi detalhado em outros posts neste blog (com versões baseadas no .NET 5 e .NET 6):
.NET 6 + Polly: exemplos com Retry, Circuit Breaker, Chaos Engineering…
Tratamento de Falhas com .NET + Polly: implementando o padrão Circuit Breaker
.NET 5 + Polly: exemplos com Circuit Breaker, Chaos Engineering, Fallback, Wait-Retry…
E em uma live no Canal .NET:
No diagrama a seguir podemos observar os diferentes estados previstos pelo padrão Circuit Breaker (Open, Half-Open e Closed):
Na classe CircuitBreakerExtensions (projeto WorkerConsumoAPIContagem) podemos observar a implementação deste padrão em .NET, empregando para isto uma policy baseada no tipo AsyncCircuitBreakerPolicy (namespace Polly.CircuitBreaker):
Podemos observar que uma instância de AsyncCircuitBreakerPolicy (linhas 31 a 35) está sendo usada a partir do método ExecuteAsync, de forma que falhas nas chamadas à API REST (uma aplicação ASP.NET Core de contagem de acessos) seguirão o fluxo de tratamento de falhas proposto pelo padrão Circuit Breaker:
Detalhes deste exemplo em .NET 7 também foram apresentados em uma live recente do Microsoft Reactor, com a gravação estando disponível no YouTube: