我们正在开始使用 Spring Webflux,并且我们正在使用 REST API 的带注释的 Controller 。我们想要测量 Spring boot 服务器处理请求所需的总时间。看起来我们可以使用 Spring WebFilter但是我不确定如何设置 StartTime (ServerWebExchange 或其他请求 header 中的某种属性)?另外,一旦响应完成,我们如何获取 startTime 并计算时间差?
谢谢!
最佳答案
是的,您可以使用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 - Spring Webflux Rest API(带注释的 Controller )的总处理时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50296843/