Provides error protection within an express route
npm i express-circuit-breaker
var breaker = require('express-circuit-breaker')
express-circuit-breaker
produces a middleware that will block requests if an error was thrown from a previous use.
For breaker(opts)
Called when a child node throws an error. Must return trip
or reset
.
return 'trip'
: Trips the breaker and blocks future requestsreturn 'reset'
: Resets the breaker to it's untripped state and allows future requests
Does not block request, instead allows request to be handled by next middleware. Breaker status is communicated in the req.breakerTripped
. If true
, breaker will not run handleBlockedRequest
.
A middleware for handling incoming requests that were blocked by the breaker
request(/protected) -> server -> breaker(open) -> endpoint
|
V
request(receives error 500) <- server <- breaker(tripped) <- endpoint(throws error)
Then later...
request(/protected) -> server <- breaker(tripped, sends back 500) -- endpoint(never touched)
var app = require('express')()
var breaker = require('express-circuit-breaker')
var CB = breaker({
catchError: e => 'trip',
handleBlockedRequest: (req, res) => res.sendStatus(500)
})
app.get('/unprotected', (req, res) => res.sendStatus(200))
app.get('/protected', CB, (req, res) => res.sendStatus(200))