> ## Documentation Index
> Fetch the complete documentation index at: https://nestcrate.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# nestrs-resilience API

> Reference for ResilienceModule, ResilienceService, PolicyBundle, RetryPolicy, TimeoutPolicy, circuit breaker, and ResilienceError.

Crate: [`nestrs-resilience`](https://docs.rs/nestrs-resilience/1.7.1) · Feature: `resilience` · Guide: [Resilience](https://nestcrate.dev/ecosystem/resilience.md)

```toml theme={null}
nestrs-resilience = "1.7.1"
# or nestrs = { version = "1.7.1", features = ["resilience"] }
```

## `ResilienceModule::register`

```rust theme={null}
pub fn register(options: ResilienceOptions) -> DynamicModule
```

Exports `TypeId::of::<ResilienceService>()`.

## `ResilienceOptions`

| Field | Default | Description |
| - | - | - |
| `defaults.retry` | 3 attempts, 1s delay, factor 2, jitter **on** | Used when `PolicyBundle.retry` is `None` |
| `defaults.timeout` | 60s | Per-attempt timeout |
| `defaults.bulkhead` | 64 concurrent | Module semaphore size |
| `circuit_failure_threshold` | 5 | Failures before open |
| `circuit_open_for` | 30s | Open duration |

## `ResilienceService`

```rust theme={null}
pub fn from_options(options: ResilienceOptions) -> Self
pub fn subscribe(&self) -> broadcast::Receiver<ResilienceEvent>
pub async fn execute<T, F, Fut>(
    &self,
    label: impl Into<String>,
    policy: PolicyBundle,
    op: F,
) -> Result<T, ResilienceError>
```

`op` must return `Result<T, ResilienceError>` and be re-entrant across retries.

## `PolicyBundle`

```rust theme={null}
pub struct PolicyBundle {
    pub retry: Option<RetryPolicy>,
    pub timeout: Option<TimeoutPolicy>,
    pub bulkhead: Option<BulkheadPolicy>,
    pub circuit_name: Option<String>,
}
```

## `ResilienceError`

`Timeout` · `CircuitOpen { retry_after_secs }` · `BulkheadRejected` · `ExhaustedRetries { attempts, message }` · `Fallback { message }` · `Other(String)`

## `ResilienceEvent`

`Retry` · `Timeout` · `CircuitOpen` · `CircuitHalfOpen` · `CircuitClosed` · `CircuitRejected` · `BulkheadRejected` · `Fallback` — each carries a `label`.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.