micrometer-metrics/micrometer
在 GitHub 查看Timer API does not support Kotlin suspend function (coroutines)
Open
#4,455 建立於 2023年12月7日
enhancementhelp wantedkotlin
描述
Please describe the feature request.
For standard (non suspend functions) it is possible to use record function to measure method invocation time:
Timer.builder("method.timed")
.register(meterRegistry)
.record { fn() } // fn() is a standard, non suspend function
However, it is not possible to call a suspend function from within record block:
Timer.builder("method.timed")
.register(meterRegistry)
.record { suspendFn() } // Suspension functions can be called only within coroutine body
The support for suspend functions should be added to the library.
Rationale Suspend functions are popular for non-blocking API, and it is currently not possible to measure time needed to call suspend functions without having a custom function to record the time.
Additional context Maybe this could be added as a extension function to the Timer interface.