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

时间:2018-05-11 16:47:08

标签: spring spring-boot spring-webflux

我们正在开始使用Spring Webflux,我们正在使用注释控制器来实现REST API。我们想测量Spring启动服务器处理请求所用的总时间。看起来我们可以使用Spring WebFilter但是我不确定如何设置StartTime(ServerWebExchange或其他请求标头中的某种属性)?一旦响应完成,我们如何获得startTime并计算时差?

谢谢!

1 个答案:

答案 0 :(得分:3)

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

相关问题