只想知道有没有办法获得spring web-flux的web客户端的响应时间?
发布于 2019-03-11 17:25:43
您也可以使用elapsed()来处理这类事情
webClient.get().uri("/bla").retrieve()
     .bodyToMono(String.class)
     .elapsed()  // map the stream's time into our streams data
     .doOnNext(tuple -> log.info("Milliseconds for retrieving {}", tuple.getT1()))
     .map(Tuple2::getT2) // after outputting the measurement, return the data only请注意,elapsed()会经历整个反应流,所以如果您在webClient之前执行某些操作...部分,你应该在这之前放一个elapsed() --这会重置计时器。
发布于 2019-03-10 21:13:27
有了Spring Boot,你就有了内置的度量标准。参见issue。
如果你想实现你的自定义秒表,你可以这样做:
Mono<String> resultMono = Mono.subscriberContext()
        .flatMap(context -> webClient.get()
                .uri("/foo")
                .retrieve()
                .bodyToMono(String.class)
                .doOnNext(ignored -> log.info("Execution duration is {} ms",
                        System.currentTimeMillis() - context.<Long>get("stopWatch"))))
        .subscriberContext(context -> context.put("stopWatch",
                System.currentTimeMillis()));https://stackoverflow.com/questions/55085767
复制相似问题