Circuit Breakers and Bulkhead Isolation
Protect downstream calls with Resilience4j circuit breakers, bulkheads, and fallback methods.
Why Resilience Matters
In a distributed system, a single slow or failing downstream service can cascade into a total outage. If your service keeps calling a dead dependency, threads pile up waiting on timeouts until the whole application becomes unresponsive.
Resilience engineering is about containing failure. Two foundational patterns:
- Circuit Breaker — stop calling a failing dependency for a while, fail fast instead of waiting.
- Bulkhead — isolate resources so one saturated dependency cannot exhaust the threads or connections needed by the rest.
In Spring Boot 4 we implement these with Resilience4j, a lightweight, functional fault-tolerance library that replaced the now end-of-life Hystrix.
Adding Resilience4j
Spring Boot 4 integrates Resilience4j through the resilience4j-spring-boot3 starter (compatible with Boot 3.x/4.x) plus Spring AOP. The annotations are activated by an aspect that wraps your method calls.
You also pull in spring-boot-starter-aop and, for metrics, spring-boot-starter-actuator with Micrometer.
<dependency>
<groupId>io.github.resilience4j</groupId>
<artifactId>resilience4j-spring-boot3</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>All lessons in this course
- Context Propagation and Span Instrumentation
- Circuit Breakers and Bulkhead Isolation
- Rate Limiting, Retry, and Time Limiters
- Correlating Logs, Metrics, and Traces