Fala galera!
Dando uma pausa nos posts sobre programação reativa, que voltarei na próxima postagem, tive de fazer uma correção em um código meu pois minha implementaÇão com Polly não estava adequada.
Bom para quem não conhece o padrão pense no Circuit Breaker como os dijuntores de sua humilde residencia.
Quando o circuito está fechado a energia passa tranquilamente. Este é o modo de operação normal.
Quando há algum problema em seu sistema elétrico, melhor dizendo no da sua caa, os circuitos se abrem e a energia para de passar.
Vocêdoe verificar o problema, fechar apenas um circuito, verificar que está ok e fechar os demais, ou constatar que o problema persiste e mante-los abertos.
A mesma coisa acontece com o padrão Circuit Breaker. Vocêmonitora a ocorrencia de erros, após um limite vocêbre o circuito por um tempo de terminado e após este tempo é feita uma nov nova tentativa, e caso seja positiva o circuito é fechado novamente.
Em resumo monitoramos um número de ocorrencias e caso o circuito abre retornamos uma excessão imediatamente não fazendo o cliente aguardar toda verificação de que o serviço consultado caiu.
Pooly é uma bblioteca de resiliencia que permite criar diversos tipos de política como Retry, Circuit Breaker, Throtling entre outras.
Seu uso é muito simples e demonstro isto no repositório: https://github.com/magoolation/Polly-CircuitBreaker
O código é simples e auto explicativo por isto nÃo me prolongarei aqui, mas caso precisem de algum auxílio ou tenha sugestão de melhorias é só entrar em contato.
PS: Para que o circuit breaker funcione adequeadamente é necessário que tenhamos uma instancia única da política e que façamos com que ela trate apenas as ecessões e casos que estejamos interessados, e esta foi minha falha na outra implementação.
Até amanhã!