모종닷컴

Issue: CircuitBreaker가 동작하지 않음 본문

포스팅 이슈

Issue: CircuitBreaker가 동작하지 않음

모종 2022. 11. 27. 17:34
반응형

이슈가 있었던 포스팅

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() }
    }
}

 

대상에 해당하시는 분들께 의도치 않게 불편을 드려 죄송합니다.

반응형