A resilience HTTP
client. Fail and recover fast.
resilient-client
is a JavaScript HTTP
client that executes requests
and monitors their execution status. When request start failing, resilient-client
plays dead and fails fast. You can provide function to manage failures.
It uses Opossum
, a Circuit Breaker
and Axios
underneath. For more about the Circuit Breaker
pattern, there are lots of resources
on the web.
npm i resilient-client
Let's say you've to call an API endpoint. HTTP
requests might fail.
All requests from resilient-client
are perfomed on circuits. Resilient-client
can throws HTTP
error or Circuit Breaker
error. A Circuit Breaker
error can open the circuit. When the circuit is open subsequent requests are blocked untils the circuit close again.
const ResilientClient = require("resilient-client");
// import ResilientClient from "resilient-client"; // For ESM modules
const client = new ResilientClient(
{
timeout: 10000, // Set Opossum timeout option. If our request takes longer than 3 seconds, trigger a failure
errorThresholdPercentage: 50, // Set Opossum errorThresholdPercentage option. If 50% of requests fail, open the circuit.
resetTimeout: 30000, // Set Opossum resetTimeout option. After 30 seconds, try again.
},
{
baseURL: "http://localhost:8000", // The API URL
}
);
// Performs a GET request at http://localhost:8000/users
client
.request({ url: "users", method: "get" })
.then((result) => console.log(result))
.catch((error) =>
ResilientClient.isBreakerError(error)
? console.error("Circuit breaker error occured: " + error) // The request takes longer than 30 seconds
: // or 50% of requests fail
console.error("Http error occured: " + error)
);
See examples/
folder for more uses cases.
Check out the full documentation here.
Contributions are welcome. See CONTRIBUTING.md
.