일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 티스토리
- 파이썬
- K6
- JVM
- jsp
- 알고리즘
- SQL
- 리눅스
- MongoDB
- oracle
- 문법 정리
- hyperledger
- c#
- smart cast
- dynamic query
- 유사코드
- gradle
- spring
- 파이썬 소스
- 자바 프로젝트
- 백준 알고리즘
- 자바
- 오라클 디비
- auto configure
- 초대장
- 학점
- 운영체제
- 오라클
- 프로젝트
- resilience4j
Archives
- Today
- Total
모종닷컴
Issue: CircuitBreaker가 동작하지 않음 본문
반응형
이슈가 있었던 포스팅
Circuit Breaker Pattern 그리고 이를 스프링에 적용해보기
이슈 : 서킷브레이커가 동작을 하지 않음.
대상 : 2022년 11월 12일 ~ 2022년 11월 27일 사이에 포스팅을 보시면서 코드를 실행했던 분들.
기존 글 그대로 코드를 그대로 설정하고 테스트 시 CircuitBreaker가 제대로 동작하지 않았음을 확인하였습니다. @CircuitBreaker 어노테이션을 사용할 경우 Aop를 이용하여 데코레이팅이 되어야 하는데 이 AOP 관련 디펜던시를 설정하지 않았던 게 문제였습니다. 제 연습용 프로젝트에서는 aop가 이미 설정되어있어서 아무런 문제 없이 코드가 동작했었습니다 ㅠㅠ.
해결방법은 크게 2가지가 있는데 AOP 디펜던시를 추가를 하는 방법과 CircuitBreaker를 다이렉트로 호출하는 방법이 있습니다. 개인적으로는 해결방법 2가 더 좋은 해결방안이 될 것 같습니다.
해결방법 1: gradle에 dependency에 aop 디펜던시를 추가
implementation("org.springframework.boot:spring-boot-starter-aop")
해결방법 2: @CircuitBreaker 어노테이션을 사용하지 않고 코드에서 직접 호출.
기존 OrderService를 아래의 코드로 대체.
@Service
class OrderService(
private val mockService: MockService,
private val circuitBreakerRegistry: CircuitBreakerRegistry
) {
private val circuitBreaker: CircuitBreaker by lazy {
circuitBreakerRegistry.circuitBreaker("circuitBreakerTest")
}
fun order(): String {
return circuitBreaker.executeSupplier { mockService.request() }
}
}
대상에 해당하시는 분들께 의도치 않게 불편을 드려 죄송합니다.
반응형