Spring Weflux Rest API(带注释的控制器)的总处理时间
Total Processing Time for Spring Weflux Rest API(Annotated Controllers)
我们开始使用 Spring Webflux,我们正在使用用于 REST 的注释控制器 API。我们想测量 Spring 引导服务器处理请求所花费的总时间。看起来我们可以使用 Spring WebFilter however I am not sure how to set StartTime (some kind of attribute in ServerWebExchange 或其他请求 headers)?此外,一旦响应完成,我们如何获取开始时间并计算时差?
谢谢!
是的,您可以为此使用 WebFilter
。请参阅下面的示例代码:
@Component
@Slf4j
public class RequestTimingFilter implements WebFilter {
@Override
public Mono<Void> filter(ServerWebExchange exchange, WebFilterChain chain) {
long startMillis = System.currentTimeMillis();
return chain.filter(exchange)
.doOnSuccess(aVoid ->
log.info("Elapsed Time: {}ms", System.currentTimeMillis() - startMillis)
);
}
}
注意doOnSuccess
调用,只有在请求成功时才会执行。报错可以加doOnError
调用查看请求时间
我们开始使用 Spring Webflux,我们正在使用用于 REST 的注释控制器 API。我们想测量 Spring 引导服务器处理请求所花费的总时间。看起来我们可以使用 Spring WebFilter however I am not sure how to set StartTime (some kind of attribute in ServerWebExchange 或其他请求 headers)?此外,一旦响应完成,我们如何获取开始时间并计算时差?
谢谢!
是的,您可以为此使用 WebFilter
。请参阅下面的示例代码:
@Component
@Slf4j
public class RequestTimingFilter implements WebFilter {
@Override
public Mono<Void> filter(ServerWebExchange exchange, WebFilterChain chain) {
long startMillis = System.currentTimeMillis();
return chain.filter(exchange)
.doOnSuccess(aVoid ->
log.info("Elapsed Time: {}ms", System.currentTimeMillis() - startMillis)
);
}
}
注意doOnSuccess
调用,只有在请求成功时才会执行。报错可以加doOnError
调用查看请求时间