Sobes.tech
Junior — Middle

Tem experiência na utilização do padrão Circuit Breaker em projetos?

sobes.tech IA

Resposta da IA

O padrão Circuit Breaker é utilizado para aumentar a resistência do sistema ao interagir com serviços ou componentes externos que podem estar indisponíveis ou a funcionar com erros. Em projetos em Go, apliquei este padrão para evitar chamadas falhadas repetidas a APIs remotas, permitindo que o sistema se recuperasse mais rapidamente e não sobrecarregasse o serviço.

Princípio de funcionamento: se o número de erros exceder um limite, o Circuit Breaker «desliga-se» e as chamadas subsequentes retornam imediatamente um erro sem tentar aceder ao serviço. Após algum tempo, tenta-se «reconectar» a cadeia e verificar se o serviço se recuperou.

Exemplo de uso com a biblioteca github.com/sony/gobreaker:

import (
    "fmt"
    "github.com/sony/gobreaker"
)

func main() {
    cb := gobreaker.NewCircuitBreaker(gobreaker.Settings{})

    result, err := cb.Execute(func() (interface{}, error) {
        // chamada ao serviço externo
        return "resposta", nil
    })

    if err != nil {
        fmt.Println("Circuit breaker aberto ou erro:", err)
    } else {
        fmt.Println("Sucesso:", result)
    }
}