Skip to content

Netflix's Hystrix latency and fault tolerance library, for Node.js

License

Notifications You must be signed in to change notification settings

julekgwa/simplified-hystrixjs

Repository files navigation

Build Status npm version

simplified-hystrixjs

A simplified hystrixjs library for Nodejs based on opossum

Install

$ npm i simplified-hystrixjs -S

Usage

const { createHystrixCommands, createHystrixStream, getPrometheusStream } = require('simplified-hystrixjs');

function hello(name) {
  return new Promise(function(resolve, reject) {
    setTimeout(function () {
      resolve(`Hello, ${name}`)
    }, 1000);
  });
}

const serviceCommand = createHystrixCommands(hello, { name : 'HelloService'});

app.get('/hello', async (req, res) => {
  try {
    const response = await serviceCommand.hello(req.query.name);
    res.send(response)
  } catch (e) {
    console.log(e);
  }
});

Methods

createCommands(fn, service);

fn - can be of type object, Array of functions or a function.

service - service object with the following properties

  • statisticalWindowNumberOfBuckets - number of buckets within the statistical window
  • statisticalWindowLength - length of the window to keep track of execution counts metrics (success, failure)
  • errorThreshold - error percentage threshold to trip the circuit
  • timeout for request
  • cbRequestVolume - minimum number of requests in a rolling window
  • cbsleep - how long the circuit breaker should stay opened.
  • name - service name
  • isFailure - emitted when the breaker action fails, called with the error
  • modifyError - modifies the error message by adding circuit name. false by default.

Monitoring

Expose a monitoring endpoint for hystrix stream.

createHystrixStream(app, /*[endpoint]*/); // default /manage/hystrix.stream

Prometheus stream.

getPrometheusStream()

Hystrix Dashboard

monitorer

to run the dashboard, download standalone-hystrix-dashboard ̨ and run

$ java -jar standalone-hystrix-dashboard-{VERSION}-all.jar

Access the dashboard in your browser: http://localhost:7979/hystrix-dashboard

Contributing

We gladly welcome pull requests and code contributions, take care to maintain the existing coding style.