Spring Boot 3中Timer迁移至Observation API的实现咨询
迁移Timer.record至Micrometer Observation API
针对你提供的原有Timer.record代码,迁移到Observation API的步骤如下:
1. 替换依赖组件
原来的代码依赖MeterRegistry,迁移后改用ObservationRegistry——在Spring Boot 3中该Bean已自动配置,直接注入即可。
2. 重构Timer获取逻辑
将原来的getTimer方法替换为创建Observation的方法,对应原Timer的名称和标签:
// 原方法 Timer getTimer(String a) { return meterRegistry.timer("module", "runtime", a); } // 迁移后的方法 Observation getObservation(String a, ObservationRegistry observationRegistry) { // 对应原Timer的名称"module",标签"runtime"=a return Observation.createNotStarted("module", observationRegistry) .lowCardinalityKeyValue("runtime", a); }
3. 记录已计算的耗时
原代码中timedd.record(timeElapsed)是记录已预计算好的时长,迁移后直接调用Observation的stop(Duration)方法传入耗时即可:
假设timeElapsed是Duration类型:
Observation observation = getObservation(a, observationRegistry); observation.stop(timeElapsed);
如果timeElapsed是long类型的毫秒数,先转换为Duration:
observation.stop(Duration.ofMillis(timeElapsed));
说明
Observation API会自动将该观测转换为与原Timer一致的指标输出,指标名称仍为module,标签runtime对应传入的a值,记录的时长与原代码完全一致。
内容的提问来源于stack exchange,提问作者D999_X
相关产品推荐
相关产品推荐

