728x90
반응형
http 관련 타임아웃 설정을 할 수 있다.
Global timeouts
전역 설정 식으로 모든 것에 적용 되는 설정을 할 수 있다.
spring:
cloud:
gateway:
httpclient:
connect-timeout: 1000
response-timeout: 5s
Per-route timeouts
각 route 룰 마다 타임아웃을 별도로 줄 수 있다.
아래는 yml 서정 방식
- id: per_route_timeouts
uri: https://example.org
predicates:
- name: Path
args:
pattern: /delay/{timeout}
metadata:
response-timeout: 200
connect-timeout: 200
아래는 Java 설정 방식
RESPONSE_TIMEOUT_ATTR 과 CONNECT_TIMEOUT_ATTR 은 org.springframework.cloud.gateway.support.RouteMetadataUtils.java에 정의 되어 있다.
import static org.springframework.cloud.gateway.support.RouteMetadataUtils.CONNECT_TIMEOUT_ATTR;
import static org.springframework.cloud.gateway.support.RouteMetadataUtils.RESPONSE_TIMEOUT_ATTR;
@Bean
public RouteLocator customRouteLocator(RouteLocatorBuilder routeBuilder){
return routeBuilder.routes()
.route("test1", r -> {
return r.host("*.somehost.org").and().path("/somepath")
.filters(f -> f.addRequestHeader("header1", "header-value-1"))
.uri("http://someuri")
.metadata(RESPONSE_TIMEOUT_ATTR, 200)
.metadata(CONNECT_TIMEOUT_ATTR, 200);
})
.build();
}
Fluent Java Routes API
fluent란 단어를 찾아보면 '유창한' 이란 의미가 있어서 정확한 의미를 모르겠지만 아래의 페이지를 참고하면 메소드 체이닝 방식을 의미하는 것으로 보인다. ( ko.wikipedia.org/wiki/%ED%94%8C%EB%A3%A8%EC%96%B8%ED%8A%B8_%EC%9D%B8%ED%84%B0%ED%8E%98%EC%9D%B4%EC%8A%A4 )
소프트웨어 공학에서 플루언트 인터페이스(fluent interface)는 메소드 체이닝에 상당 부분 기반한 객체 지향 API 설계 메소드이며, 소스 코드의 가독성을 산문과 유사하게 만드는 것이 목적이다. 특히 인터페이스 안에 도메인 특화 언어를 작성한다. 에릭 에반스와 마틴 폴러가 처음 만든 용어이다. JMock 테스팅 프레임워크에서 유연한 테스트 예측의 예는 다음과 같다:[1]
이미 2020/12/28 - [Architecture/MSA] - Spring Cloud Gateway - Route Predicate & Gateway Filter Factory
에서 많이 다루었던 것 처럼 메소드 체이닝 방식으로 기 정의된 내용 또는 Custom Predicate를 and, or, negate를 통해 이어서 사용할 수 있다.
아래는 하나의 예이다. ( ex : .predicate().and().predicate().or().predicate().negate().predicate() )
// ip 목록에 있는 것만 허용인데 잘 안됨.
RemoteAddressResolver resolver = XForwardedRemoteAddressResolver.maxTrustedIndex(1);
RouteLocator remoteAddrRouteLocator = builder.routes()
.route("direct-route", p -> p
.remoteAddr("192.168.1.1/24", "106.243.25.107", "localhost", "127.0.0.1", "192.168.1.136")
.uri("https://www.naver.com")
)
.route("proxied-route", p -> p
.remoteAddr(resolver, "192.168.1.1/24", "106.243.25.107", "localhost", "127.0.0.1", "192.168.1.136")
.uri("https://www.daum.net")
.metadata(RESPONSE_TIMEOUT_ATTR, 200)
.metadata(CONNECT_TIMEOUT_ATTR, 200)
.predicate().and().predicate().or().predicate().negate().predicate()
)
.build();
728x90
반응형
'Architecture > MSA' 카테고리의 다른 글
Spring Cloud Gateway - Custom Filter (0) | 2021.01.08 |
---|---|
Spring Cloud Gateway - CORS Configuration (0) | 2021.01.07 |
Spring Cloud Gateway - Route Metadata Configuration (0) | 2021.01.07 |
Spring Cloud Gateway - Configuration (0) | 2021.01.07 |
Spring Cloud Gateway - HttpHeadersFilters (0) | 2021.01.07 |