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