Introduction to Circuit Breaker JS
Circuit Breaker JS is a robust library designed to improve the stability and reliability of your applications by managing failed service calls and reducing the impact of such failures. This library implements the circuit breaker pattern, allowing you to gracefully handle service outages, timeouts, and other transient errors. Below are some of the most useful APIs provided by Circuit Breaker JS, along with code snippets to help you get started.
Installing Circuit Breaker JS
npm install circuit-breaker-js
Creating a Simple Circuit Breaker
const CircuitBreaker = require('circuit-breaker-js'); const breaker = new CircuitBreaker();
Configuring Circuit Breaker Options
const options = { timeoutDuration: 10000, // Time before a request is considered failed errorThreshold: 50, // Percentage of failed requests needed to trip the breaker volumeThreshold: 10, // Minimum number of requests before checking for tripping onTrip: (metrics) => console.log('Circuit tripped!', metrics), onReset: () => console.log('Circuit reset!') }; const breaker = new CircuitBreaker(options);
Using the Circuit Breaker with a Fallback
const fetch = require('node-fetch'); function apiCall() { return fetch('https://api.example.com/data') .then(response => response.json()); } function fallback() { return { data: 'default data' }; } breaker.run(apiCall, fallback) .then(result => console.log(result)) .catch(error => console.error(error));
Status and Metrics
const status = breaker.status(); console.log(status); // Outputs the current status of the circuit breaker
App Example
Below is an example of a Node.js application that integrates Circuit Breaker JS to ensure reliable API responses.
const express = require('express'); const CircuitBreaker = require('circuit-breaker-js'); const fetch = require('node-fetch'); const app = express(); const port = 3000; const options = { timeoutDuration: 10000, errorThreshold: 50, volumeThreshold: 10, onTrip: (metrics) => console.log('Circuit tripped!', metrics), onReset: () => console.log('Circuit reset!') }; const breaker = new CircuitBreaker(options); function apiCall() { return fetch('https://api.example.com/data') .then(response => response.json()); } function fallback() { return { data: 'default data' }; } app.get('/data', (req, res) => { breaker.run(apiCall, fallback) .then(result => res.json(result)) .catch(error => res.status(500).json({ error: 'Internal Server Error' })); }); app.listen(port, () => console.log(`App listening at http://localhost:${port}`));
Using Circuit Breaker JS in your application can greatly enhance its reliability and user experience by ensuring that transient errors do not disrupt your service.
Hash: 4e3b6d9fbc849e33c5da3682aefa4995123e557747247f38a137e40e149d91c3