inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)

Spring Cloud Gateway - Global Filter 적용 ➁

spring cloud gateway mvc 모델에서 route별 timeout 설정

324

전동혁

작성한 질문수 3

0

안녕하세요 선생님. 질문이 있어 남깁니다.

spring cloud gateway mvc모델에서 route별 httpclient의 readtimeout, connectiontimeout을 설정하는 방법이 있나요?
reactive한 모델에서는 metadata를 이용하여 설정하는 것 같은데, documents를 아무리 뒤져도 mvc모델에서 전역적으로 타임아웃 설정하는 법만 있고, route별 설정하는 법이 없네요..

 

어떻게 설정해야할까요?

spring-boot jpa 아키텍처 spring-cloud kafka msa rabbitmq

답변 1

0

Dowon Lee

안녕하세요, 이도원입니다.

spring cloud gateway 전체에 대한 response-timeout 또는 conenct-timeout 설정 이외에 Route별로 설정을 하실려면 아래와 같은 방법이 가능할 것 같습니다.

spring:
  cloud:
    gateway:
      routes:
        - id: user-service
          uri: http://user-service:8080
          filters:
            - name: CustomTimeoutFilter
              args:
                timeout: 3000 # Timeout in milliseconds
@Component
public class CustomTimeoutFilter extends AbstractGatewayFilterFactory<CustomTimeoutFilter.Config> {

    public CustomTimeoutFilter() {
        super(Config.class);
    }

    @Override
    public GatewayFilter apply(Config config) {
        return (exchange, chain) -> {
            // Start the chain and enforce timeout
            return chain.filter(exchange)
                    .timeout(Duration.ofMillis(config.getTimeout()))
                    .onErrorResume(throwable -> {
                        // Handle timeout errors
                        exchange.getResponse().setStatusCode(HttpStatus.GATEWAY_TIMEOUT);
                        DataBufferUtils.release(exchange.getResponse().bufferFactory().allocateBuffer());
                        return exchange.getResponse().setComplete();
                    });
        };
    }

    public static class Config {
        private long timeout;

        public long getTimeout() {
            return timeout;
        }

        public void setTimeout(long timeout) {
            this.timeout = timeout;
        }
    }
}

위와 같은 예시 코드로 작업해 보실 수 있을 것 같습니다.

감사합니다.

kafka 업데이트 강의 듣고 시포요

0

85

1

강의 교안

0

75

1

마이크로서비스간 통신 시, 인증 처리

0

79

1

api gateway 에서 인증 처리

0

66

1

섹션 19 질문드립니다

0

54

1

강의 자료 업데이트

0

84

1

부하분산 강의 섹션

0

57

1

강의자료는 어디에서?

0

72

1

강의 자료는 어디서 다운 받을 수 있나요?

0

110

1

전체 사용자 조회시 오류

0

59

1

혹시 pk 외 별도의 id 를 부여한 이유가 있을까요 ??

0

113

2

학습 방향

0

96

2

카프카 커넥터 사용 목적 문의

0

86

2

kafka 강의

0

109

2

서비스 디스커버리 종류

0

87

2

강의 자료에 대해서 궁금해요

0

117

2

GlobalFilter, LoggingFilter가 동작하지 않습니다.

0

90

2

Kafka Source Connect 버전 에러

0

85

2

소스커넥터는 사용안한 거 맞죠?

0

81

2

강의자료 업데이트 문의

0

96

2

강의에서 BCryptPasswordEncoder 에 역할(5-2)

0

57

1

강의 업데이트 계획이 궁금합니다.

0

113

2

MSA 애플리케이션에 Spring Web과 Spring Data JPA를 사용하는 것이 바람직한지 궁금합니다. (MSA 설계와 관련된 질문입니다)

0

163

2

어떤 것이 업데이트 된 건가요?

0

164

2