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

+ Recent posts