Trầ*_*ơng 5 project-reactor spring-webflux
只是想知道有没有什么办法可以得到spring web-flux的web客户端的响应时间?
你也有可能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
Run Code Online (Sandbox Code Playgroud)
请注意,这会elapsed()耗尽整个反应流,因此如果您在 webClient... 部分之前执行某些操作,则应该在此之前放置一个 elapsed() - 这会重置计时器。
借助 Spring Boot,您可以拥有内置的指标。参见问题。
如果你想实现自定义秒表,你可以这样做:
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()));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4680 次 |
| 最近记录: |