代码之家  ›  专栏  ›  技术社区  ›  Leo Prince

Spring Weflux Rest API(带注释的控制器)的总处理时间

  •  3
  • Leo Prince  · 技术社区  · 6 年前

    我们将在春季Webflux中开始使用,并将带注释的控制器用于REST API。我们想测量Spring引导服务器处理请求所需的总时间。看来我们可以用弹簧 WebFilter 但是,我不确定如何设置StartTime(中的某种属性 ServerWebExchange 或其他请求标头)?此外,一旦响应完成,我们如何获得开始时间并计算时间差?

    谢谢

    1 回复  |  直到 6 年前
        1
  •  8
  •   MuratOzkan    6 年前

    是的,您可以使用 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 致电查看请求时间。