猿问

Micrometer Timer.start/stop 和 Timer.record 之间的区别

我想检查数据库命中(多个数据库)和请求处理的延迟。什么是更好的选择Timer.SampleTimer.record

我正在使用以 Prometheus 为基础的 Micrometer。


哆啦的时光机
浏览 296回答 2
2回答

青春有我

计算事件持续时间后使用 Timer.record 。default void record(Duration duration)当您想要传递 Sample 以确定发布指标的点时,您通常会使用 Timer.Sample,不一定在完全相同的位置。您还可以更精细地控制使用 Timer 对象发布的内容。这是一个两步过程。在事件开始之前创建一个样本以返回一个样本对象static Sample start(Clock clock) {..}使用 Sample.stop 停止示例并在活动完成时推送指标public long stop(Timer timer) {..}例如来自TimedAspect的那个-  Timer.Sample sample = Timer.start(registry);    try {        return pjp.proceed();    } finally {        sample.stop(Timer.builder(timed.value())                .description(timed.description().isEmpty() ? null : timed.description())                .tags(timed.extraTags())                .tags(tagsBasedOnJoinpoint.apply(pjp))                .publishPercentileHistogram(timed.histogram())                .publishPercentiles(timed.percentiles().length == 0 ? null : timed.percentiles())                .register(registry));    }

慕尼黑8549860

主要区别是添加了手动停止录制的选项您还可以将开始状态存储在稍后可以停止的示例实例中。该示例根据注册表的时钟记录开始时间。启动样本后,执行要计时的代码,并通过调用样本的stop(Timer) 完成操作。
随时随地看视频慕课网APP

相关分类

Java
我要回答