我们正在使用com.codahale.metrics.Timer
来确定完成completeableFuture
方法所花费的时间。
我们有以下代码:
import com.codahale.metrics.Timer;
import com.codahale.metrics.MetricRegistry;
...
Timer timer = MetricsRegistry.timer("older-Cat-latency");
Timer.Context context = timer.time();
DeferredResult<OlderCat> deferredResult = new DeferredResult<>();
catService.getOlderCat(catName)
.handle((result, err) -> {
if(err != null){
deferredResult.setErrorResult(new OlderCat(...));
return null;
}
context.stop(); <---- // here we stop the timer
deferredResult.setResult(result);
return null;
});
return deferredResult;
从理论上讲,此代码应该可以,但是在Prometheus
中检查时间时,我们看到非常低的时序延迟似乎与我们得到的实际结果不符(例如,测量了15毫秒)相对于实际的2秒,我们用“手动”测量)
因此,似乎有两个选择:
您知道时间码是否正确吗?