nest-circuit-break
TypeScript icon, indicating that this package has built-in type declarations

0.0.5 • Public • Published

NestJS Circuit Breaker

This NestJS module provides a Circuit Breaker pattern implementation using the opossum library. It's designed to gracefully handle failures in microservices and distributed systems.

Features

  • Easy-to-use decorator to apply circuit breakers to any asynchronous method.
  • Configurable global and per-method circuit breaker options.
  • Seamless integration with NestJS Dependency Injection.

Installation

Install the package using npm:

npm install nest-circuit-breaker

Usage

Setup

First, import and configure the CircuitBreakerModule in your main module (e.g., AppModule). You can provide default circuit breaker options that will apply to all instances.

import { Module } from '@nestjs/common';
import { CircuitBreakerModule } from 'nest-circuit-breaker';

@Module({
  imports: [
    CircuitBreakerModule.forRoot({
      timeout: 3000,
      errorThresholdPercentage: 50,
      resetTimeout: 30000
    }),
    // ... other imports
  ],
})
export class AppModule {}

Applying Circuit Breaker

Use the @CircuitBreaker decorator on any asynchronous method to protect it with a circuit breaker. You can override the default options per method.

import { Injectable } from '@nestjs/common';
import { CircuitBreaker } from 'nest-circuit-breaker';

@Injectable()
export class SomeService {
  @CircuitBreaker({ timeout: 5000 })
  async someMethod() {
    // ... method logic
  }
}

Advanced Configuration

You can pass additional configuration options to CircuitBreakerModule.forRoot() or the @CircuitBreaker decorator based on the opossum options.

Contributing

Contributions are welcome! Please feel free to submit a pull request.

License

This project is licensed under the MIT License.

/nest-circuit-break/

    Package Sidebar

    Install

    npm i nest-circuit-break

    Weekly Downloads

    1

    Version

    0.0.5

    License

    MIT

    Unpacked Size

    136 kB

    Total Files

    38

    Last publish

    Collaborators

    • wcamaly