TGViewer
Библиотека джависта | Java, Spring, Maven, Hibernate Библиотека джависта | Java, Spring, Maven, Hibernate @javaproglib · 22K subscribers
Post #7780 2K
ℹ️ Circuit Breaker: контролируемая деградация вместо падения

Любой вызов внешнего сервиса может зависнуть, упасть или начать возвращать ошибки — неважно, ходишь ты через Feign, WebClient, gRPC или в базу. Circuit Breaker страхует от того, чтобы эта беда утянула за собой твоё приложение.

Дальше на примере Feign-клиента и Resilience4j в Spring, но паттерн работает с любым вызовом.

Вешаем брейкер на метод и сразу указываем, куда падать при проблемах:
@CircuitBreaker(name = "authorService", fallbackMethod = "getInstanceFallback")
String getInstance();

name ссылается на конфиг в application.yml, а fallbackMethod на метод, который отдаст запасной ответ.

🔹Важное правило

Сигнатура фолбэка должна совпадать с исходным методом — тот же тип возврата, те же аргументы плюс Throwable последним параметром. Иначе получишь NoSuchMethodException в рантайме:
public String getInstanceFallback(Throwable ex) {
return "Fallback content";
}


Настраиваем порог и время ожидания под тем же name:
resilience4j:
circuitbreaker:
instances:
authorService:
failure-rate-threshold: 50
sliding-window-size: 10
wait-duration-in-open-state: 5s


🔹 Как это живёт

Брейкер считает долю ошибок не с первого запроса, а по скользящему окну (sliding-window-size). 50% — это «половина из последних 10 вызовов упала», а не «одна ошибка из двух».

Когда порог превышен, цепь размыкается (open) и брейкер перестаёт долбиться в упавший сервис и сразу отдаёт fallback, не копя таймауты.

Через wait-duration-in-open-state цепь переходит в half-open: пропускает несколько пробных запросов. Сервис ожил — цепь замыкается обратно (closed), нет — снова размыкается.

🔹 Идея простая

Внешний сервис упал, а твоё приложение деградирует контролируемо, а не валится следом.

══════ Навигация ══════
Вакансии • Задачи • Собесы

🐸 Библиотека джависта

#Enterprise
  • 🔥 10
  • 👍 4
  • ⚡ 3
  • 👏 2
  • ❤‍🔥 1
More from @javaproglib
  1. Oct 10, 2026Post #7892
  2. Oct 10, 2026Read. Write. Edit. Bash. Это базовый набор операций Pi — агента, на котором построен OpenC…
  3. Oct 2, 2026🎹 Что делать после ChatGPT? Следующий шаг — AI-агенты. Они не просто отвечают на запросы,…
  4. Sep 30, 2026🔥 Последний день для разработчиков AI уже пишет код. Теперь важнее научиться встраивать е…
  5. Sep 30, 2026🫡 Шпаргалка по аннотациям Spring Boot @Autowired, @RestController, @Transactional, @Cache…
  6. Sep 29, 2026🤩 В Java для стека лучше использовать Deque Если нужен обычный LIFO — «последним пришёл,…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →