Companion module for the rewritten post 'Resilience4j Circuit Breaker in Spring Boot 4.1: What It's Still For', reworked around Framework 7 now shipping @Retryable/@ConcurrencyLimit in core. Covers what's still Resilience4j's job (circuit breaker, rate limiter, bulkhead's bounded wait, fallback methods, Actuator/Micrometer metrics), the off-by-one between maxAttempts and maxRetries, and two Boot-4.1 build breaks: spring-boot-starter-aop no longer exists (renamed to spring-boot-starter-aspectj, proven with Maven Central metadata and the renamed starter's own POM -- see resilience/docs/08-starter-aop-renamed-to-starter-aspectj.md in this same repo), and the resulting fix uses that renamed starter directly rather than assembling spring-aop + aspectjweaver by hand. Kept as its own module rather than a new top-level repository, alongside the existing resilience/ module for the sibling Framework-7 post.
13 lines
759 B
Plaintext
13 lines
759 B
Plaintext
@Retryable against a permanently-dead downstream: two consecutive calls, no shared state
|
|
========================================================================================
|
|
-- Call 1: pay("order-A") --
|
|
threw FlakyDownstream.DownstreamUnavailableException after exhausting retries
|
|
downstream calls so far: 4 (1 initial attempt + 3 retries = 4 expected)
|
|
|
|
-- Call 2: pay("order-B"), immediately after Call 1 exhausted its retries --
|
|
downstream calls so far: 8 (another 4 attempts, not fast-failed)
|
|
|
|
Contrast with docs/output/01-circuitbreaker-trip.txt: there, calls 7-9 after the trip
|
|
added ZERO downstream calls. Here, call 2 pays the same 4-attempt cost as call 1.
|
|
@Retryable has no OPEN state -- it cannot tell you 'this dependency is currently down'.
|