- orderservice를 기동하지 않고 order-service 호출하고 결과
- Resilience4j 주입
- ErrorDecoder 사용부분을 CircuitBreaker로 수정
- user-service에서 order-service를 사용하는 controller 호출
- order-service외의 정보는 표시됨
Circuitbreaker Config 클래스 생성
- Resilience4jConfig class 생성
package com.example.userservice.config;
import io.github.resilience4j.circuitbreaker.CircuitBreakerConfig;
import io.github.resilience4j.timelimiter.TimeLimiterConfig;
import org.springframework.cloud.circuitbreaker.resilience4j.Resilience4JCircuitBreakerFactory;
import org.springframework.cloud.circuitbreaker.resilience4j.Resilience4JConfigBuilder;
import org.springframework.cloud.client.circuitbreaker.Customizer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.time.Duration;
@Configuration
public class Resilience4jConfig {
@Bean
public Customizer<Resilience4JCircuitBreakerFactory> globalCustomConfiguration() {
CircuitBreakerConfig circuitBreakerConfig = CircuitBreakerConfig.custom()
// CircuitBreaker 를 열지 결정하는 Failure rate threshold percentage
// default: 50
.failureRateThreshold(4)
// CicuitBreaker 를 open 한 상태를 유지하는 지속 기간을 의미
// 이 기간 이후에 half-open 상태
// default: 60seconds
.waitDurationInOpenState(Duration.ofMillis(1000)) // 1초
// CircuitBreaker 가 닫힐 때 통화 결과를 기록하는 데 사용되는 슬라이딩 창의 유형을 구성
// 카운트 기반 또는 시간 기반
.slidingWindowType(CircuitBreakerConfig.SlidingWindowType.COUNT_BASED) // 기본값 - COUNT_BASED
// CircuitBreaker 가 닫힐 때 호출 결과를 기록하는 데 사용되는 슬라이딩 창의 크기를 구성
// default: 100
.slidingWindowSize(2)
.build();
TimeLimiterConfig timeLimiterConfig = TimeLimiterConfig.custom()
.timeoutDuration(Duration.ofSeconds(4))
.build();
return factory -> factory.configureDefault(id -> new Resilience4JConfigBuilder(id)
.timeLimiterConfig(timeLimiterConfig)
.circuitBreakerConfig(circuitBreakerConfig)
.build());
}
}
'FrameWork > Spring Cloud' 카테고리의 다른 글
Micrometer (0) | 2021.09.17 |
---|---|
Microservice 분산 추적 (0) | 2021.09.12 |
장애 처리와 Microservice 분산 추적 - 1 (0) | 2021.09.11 |
마이크로서비스간에 데이터 동기화 - 3 (0) | 2021.09.08 |
마이크로서비스간에 데이터 동기화 - 2 (0) | 2021.09.08 |