Esta página se muestra en inglés. Una traducción al español está en curso.
ScriptsJul 19, 2026·3 min de lectura

Failsafe — Fault Tolerance and Resilience Patterns for the JVM

Failsafe is a lightweight Java library that provides retry policies, circuit breakers, rate limiters, timeouts, and fallbacks to make applications resilient against transient failures.

Listo para agents

Instalación lista para agent

Este activo puede instalarse después de elegir el runtime, revisar el plan y ejecutar el comando correspondiente.

Native · 98/100Política: permitir
Superficie agent
Cualquier agent MCP/CLI
Tipo
Skill
Instalación
Single
Confianza
Confianza: Established
Entrada
Failsafe Overview
Comando de instalación directa
npx -y tokrepo@latest install d6fd97df-83b1-11f1-9bc6-00163e2b0d79 --target codex

Ejecutar después de confirmar el plan con dry-run.

Introduction

Failsafe provides composable resilience policies for Java applications. Instead of scattering try-catch-retry logic throughout a codebase, developers declare policies like retries, circuit breakers, and timeouts as first-class objects and compose them into execution pipelines. The library has zero external dependencies and works with any Java 8+ project.

What Failsafe Does

  • Retries failed operations with configurable delays, backoff strategies, and jitter
  • Implements circuit breakers that trip after a failure threshold and reset after a cool-down period
  • Applies rate limiting, timeouts, and bulkhead isolation to protect downstream services
  • Composes multiple policies into a single execution pipeline with deterministic ordering
  • Supports synchronous and asynchronous execution including CompletableFuture integration

Architecture Overview

Failsafe models each resilience pattern as a Policy object. Policies are composed into an outer-to-inner chain: when you call Failsafe.with(retry, circuitBreaker, timeout).get(supplier), the retry wraps the circuit breaker which wraps the timeout. Each policy intercepts the execution lifecycle — before, after, success, and failure — to decide whether to permit, retry, or short-circuit the call. Event listeners on each policy enable logging and metrics without coupling to a specific observability stack.

Self-Hosting & Configuration

  • Add the failsafe Maven/Gradle dependency — no additional runtime services required
  • Build policies programmatically using fluent builder APIs (no XML or annotation configuration)
  • Compose policies via Failsafe.with(policy1, policy2, ...) in the order you want them applied
  • Register event listeners on policies for logging, metrics, or alerting
  • Use FailsafeExecutor.getAsync() for non-blocking execution on a custom executor or virtual threads

Key Features

  • Zero dependencies — a single 100 KB JAR with no transitive pull
  • Composable policies that stack in a clear, predictable order
  • Built-in support for exponential backoff, jitter, and delay functions
  • Async-first design with CompletableFuture and virtual thread compatibility
  • Strongly typed — policies carry result and failure type parameters

Comparison with Similar Tools

  • Resilience4j — Similar feature set with annotation-driven Spring integration; Failsafe favors programmatic composition with zero deps
  • Spring Retry — Tied to the Spring ecosystem; Failsafe works in any Java project
  • Hystrix — Netflix library now in maintenance mode; Failsafe is actively maintained with a lighter API
  • Polly (.NET) — .NET equivalent; Failsafe fills the same role for JVM applications
  • MicroProfile Fault Tolerance — Spec-based with CDI annotations; Failsafe offers a standalone programmatic approach

FAQ

Q: Does Failsafe require Spring or Jakarta EE? A: No. Failsafe is a standalone library with zero framework dependencies. It works in plain Java, Spring, Quarkus, or any JVM environment.

Q: How do I compose a retry with a circuit breaker? A: Pass both policies to Failsafe.with(retryPolicy, circuitBreaker). The retry wraps the circuit breaker, so retries happen around circuit-breaker-guarded calls.

Q: Does Failsafe support asynchronous execution? A: Yes. Use Failsafe.with(...).getAsync(supplier) to return a CompletableFuture. You can also supply a custom ScheduledExecutorService.

Q: How does Failsafe handle rate limiting? A: The RateLimiter policy supports smooth and bursty rate limiting. Calls that exceed the rate either block, fail fast, or wait for a configured duration.

Sources

Discusión

Inicia sesión para unirte a la discusión.
Aún no hay comentarios. Sé el primero en compartir tus ideas.

Activos relacionados