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调用查看请求时间