On this page
Overview
This Java library limits cascading failures when an application calls remote services. You can select only the CircuitBreaker, Retry, RateLimiter, Bulkhead, and TimeLimiter modules you need, then compose them around lambdas or method references.
Features and best fit
Based on official documentation; not hands-on tested · Content checked:
Key features
Compose fault-tolerance patterns around individual calls
Higher-order decorators apply CircuitBreaker, Retry, RateLimiter, and Bulkhead behavior to functional interfaces. Multiple decorators can protect one call, with fallbacks and timeout handling available for asynchronous work.
Sources: [1]
Add only the modules required by the application
Core modules cover circuit breaking, rate limiting, concurrency isolation, retries, timeouts, and result caching. Add-ons integrate with Spring Boot, Micrometer, Feign, Kotlin, and other application stacks.
Sources: [1]
Best fit
Protect each remote service as a separate failure domain
It fits Java applications that call several backends such as payment, inventory, and notification services. The official README recommends unique instances per protected backend so failure state, thresholds, concurrency limits, and metrics remain isolated.
Sources: [1]
Before adoption
Pin the Java line and decorator order before rollout
The v2.4.0 build.gradle sets Java sourceCompatibility and targetCompatibility to 17, while the included Wrapper uses Gradle 8.10. Source verification therefore needs a JDK environment that can launch Gradle 8.10 and compile for Java 17. The README also states that Resilience4j 3 requires Java 21. In Spring Boot 3, the default aspect order can place Retry outside CircuitBreaker, so configure and test the order explicitly.
Official sources
- [1]Resilience4j v2.4.0 README(2026-10-04)
- [2]Resilience4j v2.4.0 Spring Boot 3 README(2026-10-04)
- [3]Resilience4j v2.4.0 Gradle build configuration(2026-10-04)
- [4]Resilience4j v2.4.0 Gradle Wrapper configuration(2026-10-04)
- [5]Resilience4j v2.4.0 release(2026-10-04)
- [6]Resilience4j GitHub repository metadata(2026-10-04)
- [7]Resilience4j v2.4.0 license(2026-10-04)
Supplemental curator note
When comparing libraries, look beyond the pattern count and check whether state and metrics can stay isolated per protected backend. Spring Boot adopters should also review Retry and CircuitBreaker aspect order.
Try it in 3 steps
- 1
Clone the v2.4.0 source
Make a shallow clone of the fixed tag and keep the same directory for the following Gradle Wrapper commands.
git clone --depth 1 --branch v2.4.0 https://github.com/resilience4j/resilience4j.git && cd resilience4j - 2
Check the JDK and Wrapper, then test CircuitBreaker
Version 2.4.0 includes the Gradle 8.10 Wrapper and compiles for Java 17. Verify the environment with JDK 17 before running the circuit-breaker tests.
java -version && ./gradlew --version && ./gradlew :resilience4j-circuitbreaker:test - 3
Run the Retry tests
Test the retry module from the same checkout to inspect a second independently selectable capability.
./gradlew :resilience4j-retry:test
Growth
Growth trends · Last 30 days
10,776 Stars
Trend data is still being collected.
Development activity
Last 90 days · weekly
- Commits (last 30 days)
- 4
- Open PRs
- 57
Development activity is still being collected.
Built with
Categories and tags
Categories
GitHub data
GitHub dataView detailed GitHub data
GitHub Topics
- resilience
- circuitbreaker
- rate-limiter
- retry
- bulkhead
- metrics
- Stars
- 10,776
- Forks
- 1,514
- Watchers
- 215
- Open issues
- 261
- Contributors
- 241
- Owner type
- Organization
- Primary language
- Java
- License
- Apache-2.0
- Repository last updated
- Sep 23, 2026
Related information
Write a related articleShare a guide or use case for this OSS in Markdown. Articles are published after administrator approval.
Explore next
- Gson24,234 Stars
1 shared tag(s) · 1 shared category(s) · Same language
serialize and deserialize Java objects to JSON without requiring annotations on every model
Java - MyBatis20,448 Stars
1 shared tag(s) · 1 shared category(s) · Same language
keep SQL explicit while mapping query results into Java objects
Java - Caffeine17,882 Stars
1 shared tag(s) · 1 shared category(s) · Same language
keep reusable data in a high-performance Java in-memory cache and control size, expiration, and refresh policies to reduce recomputation and I/O
Java - Dagger17,702 Stars
1 shared tag(s) · 1 shared category(s) · Same language
build Java and Android dependency-injection graphs with compile-time code generation and no runtime reflection
Java - Mockito15,454 Stars
1 shared tag(s) · 1 shared category(s) · Same language
replace Java collaborators and keep unit tests focused
Java - Arduino IDE 1.x14,656 Stars
1 shared tag(s) · 1 shared category(s) · Same language
edit, compile, and upload sketches to Arduino boards from one desktop IDE
Java
Report incorrect information
Tell us if any listing information is incorrect or outdated.