티스토리 뷰
Spring Cloud Gateway mapping custom data to configuration - Meta Data 정의
소농배 2020. 11. 29. 13:24Spring Cloud Gateway 의 설정을 Admin 페이지에서 관리자가 쉽게 수정할 수 있도록 하기 위해서 Route 와 Filter 설정을 Custom Meta Data 로 아래와 같이 정의 하였다.
YML 파일의 Spring Cloud Gateway 의 설정을 저장하는 방법도 가능하지만 우리 도메인에 특화된 설정들을 추가하기 힘들다는 단점과 spring cloud gateway 에 강한 의존성이 생기는 단점을 해소하기 위해서 Custom Meta Data 를 정의하였고 이를 런타임에 Spring Cloud Gateway Configuration 으로 변환하였다.
ROUTE_CONFIG.json
[{
"uri" : "https://www.naver.com",
"connectionTimedOut" : "300000",
"responseTimedOut" : "30000",
"enabled" : "true",
"predicates" : [{
"predicateType" : "Path",
"args" : {
"pattern_0" : "/blog/**"
"pattern_1" : "/news/**"
}
}],
"filters" : [{
"filterName" : "DeviceHeaderFilter",
"args" : {}
}]
},
{
"uri" : "https://www.daum.net",
"enabled" : "true",
"predicates" : [{
"predicateType" : "Path",
"args" : {
"pattern_0" : "/cafe/**",
"pattern_1" : "/sports/**"
}
}],
"filters" : []
}]
ROUTE_CONFIG.json 에는 RoutePredication 으로 변환되어 Spring Cloud Gateway 의 라우터 설정으로 변환될 데이터들이 저장된다.
라우터의 Predicates 가 Array 로 지정되며 그때 전달된 인자들은 Map 형태로 데이터화 하였다.
라우터의 Filters 또한 Array 로 지정되며 그때 전달된 인자들은 Map 형태로 데이터화 하였다.
GLOBAL_CONFIG.json
{
"filters" : [{
"filterName" : "HostSettingFilter",
"args" : {
"host" : "my-host.comm"
}
},
{
"filterName" : "GlobalLoggingFilter",
"args" : {}
},
{
"filterName" : "UnsupportedBrowserFilter",
"args" : {
"unsupportedBrowserRegx" : ".*(MSIE [1-7]\\.).*"
}
}]
}
GLOBAL_CONFIG.json 은 라우터별 설정이 아닌 Spring Cloud Gateway 전역에 지정될 설정들을 지정하는 데이터이다.
대표적으로 GlobalFilter 를 설정값으로 가지며 filters 에 명시되어있지 않은 GlobalFilter 는 스프링의 빈으로 등록하지 않아 GlobalFilter 의 역할을 하지 않는다.
'Spring Framework > Spring Cloud' 카테고리의 다른 글
Spring Cloud Gateway dynamic configuration change (0) | 2020.11.29 |
---|---|
Spring Cloud Gateway mapping custom data to configuration - Route meta data to RoutePredication (0) | 2020.11.29 |
Spring Cloud Gateway 프로젝트 세팅 (0) | 2020.08.04 |
Spring Cloud Gateway RateLimiter 적용 (1) | 2020.08.04 |
Spring Cloud Gateway (0) | 2020.07.23 |
- Total
- Today
- Yesterday
- ResultSet
- notify()
- notifyAll()
- circurit breaker
- Flux
- RoutePredication
- mariada-connector
- referencedColumnName
- reative
- N+1
- getBoolean
- DyanomoDB
- custom config data convertion
- Seperate Chaining
- router
- AbstractMethodError
- rate limit
- dynamodb
- reactor
- spring cloud gateway
- MariaDB
- ConcurrentHashMap
- msyql-connector-java
- wait()
- RouteDefinition
- HashMap
- aurora
- Lazy
- GlobalFilter
- mariadb-connector-j
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |