webflux가 netty 기반이라서, 아직 (Spring5) 기반에서는 request-timeout 설정이 없음.
각 request에서 mono.timout 이 설정이 가능하고,
아니면, 아래와 같이 WebFilter 설정을 통해서 전체 request-timeout 설정이 가능함.
그런데, 만약 비동기식으로 처리되고, 서버에서 on-line 배치 방식으로 처리된다면,
아래 WebFilter는 의미가 없을 테고, 해당 Mono에서 timeout 설정을 해야함.
@Slf4j
@Component
public class RequestTimeoutWebFilter implements WebFilter {
@Override
public Mono<Void> filter(ServerWebExchange exchange, WebFilterChain chain) {
// Request Timeout 설정. WebFlux는 아직 application.yml에서 request-timeout 설정이 없음.
// 최근 Tracking 이력 max값 199초. 최대 300초 기준으로 5분으로 산정함.
log.info("#################### WebFilter - start");
Mono<Void> mono = chain
.filter(exchange)
// .timeout(Duration.ofMinutes(5)); // 5 분
.timeout(Duration.ofSeconds(10)); // test
log.info("#################### WebFilter - end");
return mono;
}
}
end.
728x90
'Programming Language > Java' 카테고리의 다른 글
cmd script - jar application 이 미실행 중일 때만, start 수행 (0) | 2024.11.11 |
---|---|
java application - start cmd / stop cmd (1) | 2024.11.09 |
logback 명에 따른 config 재설정 로직 (not Spring) (1) | 2024.11.07 |
G1 GC에서는 Full GC는 잘 안일어난다 (0) | 2023.08.05 |
csv 파일 생성 예제. (추가 라이브러리 없이) (0) | 2023.07.27 |