[스프링] Hystrix의 동적 프로퍼티 설정

Hystrix는 서킷 브레이커 라이브러리로, 애플리케이션에서 외부 서비스 호출을 보호하는 데 사용됩니다. Hystrix의 설정은 주로 정적인 방식으로 이루어지지만 때로는 동적으로 프로퍼티를 변경해야 할 수 있습니다. 이 글에서는 스프링 부트 애플리케이션에서 Hystrix의 동적 프로퍼티 설정 방법을 살펴보겠습니다.

1. 필요한 의존성 추가

먼저 pom.xml 파일에 spring-cloud-starter-netflix-hystrix 의존성을 추가합니다.

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
</dependency>

2. 프로퍼티 설정

애플리케이션의 application.properties 혹은 application.yml 파일에 Hystrix의 기본 설정을 추가합니다.

hystrix:
  command:
    default:
      execution.isolation.thread.timeoutInMilliseconds: 1000

3. 동적 프로퍼티 변경

애플리케이션을 시작한 후, Hystrix의 프로퍼티를 동적으로 변경하려면 HystrixCommandProperties.Setter 클래스의 인스턴스를 사용합니다. 다음은 Hystrix의 타임아웃 값을 동적으로 2000ms로 변경하는 예제입니다.

HystrixCommand.Setter.withGroupKey(HystrixCommandGroupKey.Factory.asKey("GroupName"))
                    .andCommandPropertiesDefaults(HystrixCommandProperties.Setter()
                            .withExecutionTimeoutInMilliseconds(2000));

위 예제에서 withExecutionTimeoutInMilliseconds 메서드를 사용하여 동적으로 타임아웃 시간을 변경할 수 있습니다.

Hystrix의 동적 프로퍼티 설정은 애플리케이션의 유연성을 높일 수 있으며, 변경된 프로퍼티는 즉시 적용되어 외부 서비스 호출을 보호할 수 있습니다.

참고 문헌: