ckt-breaker
Tiny circuit breaker implementation. Wrapped service must return Promise.
Requirements
Install
$ npm install --save ckt-breaker
Usage
const cktBreaker = require('ckt-breaker');
const fn = () => Promise.reject('I got nothing');
const ckt = cktBreaker(fn, {
retry: 10000,
timeout: 1000,
maxError: 10,
maxTime: 1000,
fallback: () => Promise.reject(new Error('Service Currently unavailable')),
});
ckt.fire('hello world')
API
cktBreaker(fn, {options})
fn
Type: function
A promise returning function
options
retry
Type: integer
Default: 10000
Time in ms after which to retry hitting fn
timeout
Type: integer
Default: 0
Time in ms to timeout fn if fn takes longer than that.
By default this is disabled (0).
maxError
Type: integer
Default: 10
No of errors in maxTime
time to occur before breaking the circuit
maxTime
Type: integer
Default: 1000
Time Frame to consider maxError no of error to break the circuit
fallback
Type: function
Default: () => Promise.reject(new Error('Service Currently unavailable')
Fallback function to call when circuit is broken
Methods
fire
const ckt = cktBreaker(fn);
ckt.fire([1,2,3]) // Any args taken by fn;
Function that runs wrapped fn and passes over arguments given to it
Events
open
Fired when circuit is opened
closed
Fired when circuit is closed
License
MIT © Nikhil Srivastava