토리맘의 한글라이즈 프로젝트 logo 토리맘의 한글라이즈 프로젝트

스프링 클라우드 서킷 브레이커 공식 레퍼런스를 한글로 번역한 문서입니다.

전체 목차는 여기에 있습니다.

목차


1.1. Starters

Resilience4J 구현체엔 두 종류의 스타터가 있다. 하나는 reactive 어플리케이션 전용, 다른 하나는 non-reactive 어플리케이션 용이다.


1.2. Auto-Configuration

Resilience4J 자동 설정은 spring.cloud.circuitbreaker.resilience4j.enabledfalse로 설정하면 비활성화할 수 있다.


1.3. Default Configuration

모든 서킷 브레이커에서 사용할 디폴트 설정을 만들고 싶다면 Resilience4JCircuitBreakerFactoryReactiveResilience4JCircuitBreakerFactory를 넘겨받는 Customize 빈을 만들어라. configureDefault 메소드를 통해 디폴트 설정을 제공할 수 있다.

@Bean
public Customizer<Resilience4JCircuitBreakerFactory> defaultCustomizer() {
    return factory -> factory.configureDefault(id -> new Resilience4JConfigBuilder(id)
            .timeLimiterConfig(TimeLimiterConfig.custom().timeoutDuration(Duration.ofSeconds(4)).build())
            .circuitBreakerConfig(CircuitBreakerConfig.ofDefaults())
            .build());
}

Reactive Example

@Bean
public Customizer<ReactiveResilience4JCircuitBreakerFactory> defaultCustomizer() {
    return factory -> factory.configureDefault(id -> new Resilience4JConfigBuilder(id)
            .circuitBreakerConfig(CircuitBreakerConfig.ofDefaults())
            .timeLimiterConfig(TimeLimiterConfig.custom().timeoutDuration(Duration.ofSeconds(4)).build()).build());
}

1.4. Specific Circuit Breaker Configuration

디폴트 설정을 제공할 때처럼 Resilience4JCircuitBreakerFactoryReactiveResilience4JCircuitBreakerFactory를 넘겨받는 Customize 빈을 생성하면 된다.

@Bean
public Customizer<Resilience4JCircuitBreakerFactory> slowCustomizer() {
    return factory -> factory.configure(builder -> builder.circuitBreakerConfig(CircuitBreakerConfig.ofDefaults())
            .timeLimiterConfig(TimeLimiterConfig.custom().timeoutDuration(Duration.ofSeconds(2)).build()), "slow");
}

서킷 브레이커를 생성할 때 사용할 설정을 지정하는 것 말고도, 서킷 브레이커를 생성한 후 호출자에 반환하기 전에 커스텀할 수도 있다. 이땐 addCircuitBreakerCustomizer 메소드를 사용하면 된다. Resilience4J 서킷 브레이커에 이벤트 핸들러를 추가한다면 유용할 거다.

@Bean
public Customizer<Resilience4JCircuitBreakerFactory> slowCustomizer() {
    return factory -> factory.addCircuitBreakerCustomizer(circuitBreaker -> circuitBreaker.getEventPublisher()
    .onError(normalFluxErrorConsumer).onSuccess(normalFluxSuccessConsumer), "normalflux");
}

Reactive Example

@Bean
public Customizer<ReactiveResilience4JCircuitBreakerFactory> slowCustomizer() {
    return factory -> {
        factory.configure(builder -> builder
        .timeLimiterConfig(TimeLimiterConfig.custom().timeoutDuration(Duration.ofSeconds(2)).build())
        .circuitBreakerConfig(CircuitBreakerConfig.ofDefaults()), "slow", "slowflux");
        factory.addCircuitBreakerCustomizer(circuitBreaker -> circuitBreaker.getEventPublisher()
            .onError(normalFluxErrorConsumer).onSuccess(normalFluxSuccessConsumer), "normalflux");
     };
}

1.5. Collecting Metrics

스프링 클라우드 서킷 브레이커 Resilience4j는 클래스패스에 의존성만 제대로 추가해줬다면 메트릭 수집을 위한 자동 설정을 기본으로 제공한다. 메트릭 수집을 활성화하려면 org.springframework.boot:spring-boot-starter-actuatorio.github.resilience4j:resilience4j-micrometer를 포함하고 있어야 한다. 이 라이브러리 의존성이 존재하면 메트릭이 생성된다. 메트릭과 관련해서 자세한 정보는 Resilience4j 문서를 참고해라.

micrometer-corespring-boot-starter-actuator에서 가져오기 때문에 직접 추가해줄 필욘 없다.


전체 목차는 여기에 있습니다.

<< >>

TOP