首页 > 解决方案 > 是否有一些功能可以记录/计算 spring weblfux 中模块的时间延迟?例如使用@Timed 注释

问题描述

我想知道是否存在,或者我们可以使用任何功能来记录返回 Mono/Flux 的函数所花费的实际时间?例如,创建一个 @Timed 注释来记录它所花费的实际时间。我知道函数返回类型是 Flux/Mono,所以它应该立即返回,这就是为什么我想知道我们是否真的可以做这样的事情,以便我们知道哪些模块/子模块需要多少时间?

我们想将我们的阻塞 spring-boot 服务迁移到 spring webflux,因此通过我们拥有的所有可能的选项来更好地理解。

PS我是反应式编程的新手,仍在学习范式。

标签: javareactive-programmingspring-webfluxproject-reactor

解决方案


您可以使用metrics()运算符为发布者计时。您可以将其与name()andtags()运算符结合使用来自定义发布的指标。

listenToEvents()
   .name("events") 
   .tag("source", "kafka")
   .metrics() 
   .doOnNext(event -> log.info("Received {}", event))
   .delayUntil(this::processEvent)
   .subscribe();

发布商指标文档


推荐阅读