exframe-circuit-breaker
v1.0.1
Published
Circuit breaker abstraction built on top of Opossum
Readme
Exframe Circuit Breaker module
A standardized circuit breaker abstraction built on top of Opossum
Installation
npm install exframe-circuit-breakerExample
import { CircuitBreaker } from 'exframe-circuit-breaker';
// initialize a breaker
const breaker = new CircuitBreaker(callService, {
timeoutMs: 10_000,
resetTimeoutMs: 30_000
});
// register event callback
breaker.on('close', () => {
console.log('breaker transitioned to closed');
});
breaker.on('open', () => {
console.log('breaker transitioned to open');
});
// fire the breaker and handle error or rejection
const callServiceWithBreaker = (context, ...args) => breaker.fire(...args).catch(e => {
const breakerState = breaker.getDebugState(); // debug internal state of breaker; shape is not stable - do not use for control flow
context.log.warn(e, {breakerState});
if (e.code === "EOPENBREAKER") {
// action was rejected due to open circuit
}
})Local Dev Notes
- Compiled output from dist
- Unit tests:
npm t
