Backend · Resiliência

Circuit Breaker

Disjuntor com estados fechado, aberto e meio-aberto: para de chamar o serviço que está caindo e testa a volta sozinho. Seu sistema continua de pé quando o fornecedor sai do ar.

Circuit breaker · Resiliência · Fallback · 9 testes automatizados · Licença MIT · Criado por FlowCore Soluções LTDA

Como instalar

  1. Funciona onde você já roda Node 18+, Cloudflare Workers, Deno, Bun, Vercel e Netlify Functions. Zero dependência: só fetch e Web Crypto, que já vêm no runtime.
  2. Crie src/lib/circuit-breaker.ts Cole o código da aba Código.
  3. Use
    const erp = criarCircuitBreaker({ nome: "erp", limiteFalhas: 5, tempoResetMs: 30_000 });
    erp.on((e) => e.tipo === "mudanca" && console.warn("ERP:", e.de, "->", e.para));
    try {
      return await erp.executar(() => buscarPrecoNoErp(sku));
    } catch (e) { if (e instanceof ErroCircuitoAberto) return precoEmCache(sku); throw e; }
  4. Rode o teste junto O arquivo de teste (aba Teste) cobre 9 cenários. Copie para src/lib/ ao lado e rode:
    npm install -D vitest
    npx vitest run src/lib

Código no GitHub · Biblioteca de códigos

Mais em Resiliência