spring - Spring Webflux Rest API(带注释的 Controller )的总处理时间

标签 spring spring-boot spring-webflux

我们正在开始使用 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/

相关文章:

spring - java.lang.IllegalArgumentException: error at::0 切入点中的正式未绑定(bind)

Spring Boot Kafka 启动错误 "Connection to node -1 could not be established. Broker may not be available."

java - ClassCastException是Spring boot启动批处理作业时将JobRepositoryFactoryBean强制转换为JobRepository引起的

java - 如何在现有 API 之上设计轻量​​级 REST API

java - EmbeddedKafkaBroker 设置属性抛出 NoClassDefFoundError : kafka/zk/EmbeddedZookeeper

java - Spring 中基于注释的连接仅适用于集合的一部分

java - 用于 Spring bean 初始化的 ActiveMQ 连接故障转移检测

java - Spring 5 FluxSink执行fluxSink.next时不发送数据

java - 如何在 Java webflux webclient 请求中禁用安全证书检查

java - 如何在 Spring WebFlux @ExceptionHandler 中访问 RequestBody?