{ "name": "Circuit Breaker with Resilience4J Example", "description": "Example Spring Cloud Circuit Breaker configuration using Resilience4J with fallback", "component": "Spring Cloud Circuit Breaker", "configuration": { "resilience4j.circuitbreaker.instances.userService": { "sliding-window-size": 10, "failure-rate-threshold": 50, "wait-duration-in-open-state": "30s", "permitted-number-of-calls-in-half-open-state": 5, "slow-call-duration-threshold": "3s", "slow-call-rate-threshold": 80 }, "resilience4j.circuitbreaker.instances.paymentService": { "sliding-window-size": 20, "failure-rate-threshold": 25, "wait-duration-in-open-state": "60s" } }, "javaImplementation": { "annotation": "@CircuitBreaker(name = \"userService\", fallbackMethod = \"getUserFallback\")\npublic User getUser(String userId) {\n return userServiceClient.findById(userId);\n}\n\npublic User getUserFallback(String userId, Exception ex) {\n return User.defaultUser(userId);\n}", "programmatic": "circuitBreakerFactory.create(\"userService\")\n .run(() -> userServiceClient.findById(userId),\n throwable -> User.defaultUser(userId));" }, "states": { "CLOSED": "Normal operation, requests pass through", "OPEN": "Circuit tripped, requests fail fast with fallback", "HALF_OPEN": "Testing recovery, limited requests allowed through" } }