Tiny circuit breaker implementation. Wrapped service must return Promise.
- node v6+
- npm 3+
$ npm install --save ckt-breaker
const cktBreaker = require('ckt-breaker');
// Function that hits some service
const fn = () => Promise.reject('I got nothing');
const ckt = cktBreaker(fn, {
retry: 10000, // time in ms after which to retry hitting fn
timeout: 1000, // time in ms to timeout if fn takes longer than that
maxError: 10, // Max no of errors
maxTime: 1000, // time in ms in which maxError occurs
fallback: () => Promise.reject(new Error('Service Currently unavailable')),
});
ckt.fire('hello world').catch(err => console.log(err)) // Safe doesn't overload the remote service
If you are using this for one off scripts (eg. console apps), use process.exit(0)
to exit the app.
Type: function
A promise returning function
Type: integer
Default: 10000
Time in ms after which to retry hitting fn
Type: integer
Default: 0
Time in ms to timeout fn if fn takes longer than that. By default this is disabled (0).
Type: integer
Default: 10
No of errors in maxTime
time to occur before breaking the circuit
Type: integer
Default: 1000
Time Frame to consider maxError no of error to break the circuit
Type: function
Default: () => Promise.reject(new Error('Service Currently unavailable')
Fallback function to call when circuit is broken
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
Fired when circuit is opened
Fired when circuit is closed
MIT © Nikhil Srivastava