Tiny circuit breaker implementation. Wrapped service must return Promise.

Requirements

node v6+

npm 3+ Install

$ npm install

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 ])

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