【问题标题】:Get response time of web client web-flux获取webclient webflux的响应时间
【发布时间】:2019-07-31 19:37:00
【问题描述】:

只是想知道有没有办法获取spring web-flux的web客户端的响应时间?

【问题讨论】:

    标签: spring-webflux project-reactor


    【解决方案1】:

    您也可以使用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() - 这会重置计时器。

    【讨论】:

      【解决方案2】:

      使用 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()));
      

      【讨论】:

      • 我认为这只适用于一项,助焊剂呢?
      猜你喜欢
      • 2018-03-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-13
      • 1970-01-01
      • 1970-01-01
      • 2020-08-17
      相关资源
      最近更新 更多