0

考虑以下代码:

public static void main(String[] args) {
    Timer timer = Metrics.timer("item.processing");
    for (int i = 0; i < 100; i++) {
        timer.record(i, TimeUnit.SECONDS);
    }

    System.out.println(timer.count());
    System.out.println(timer.mean(TimeUnit.SECONDS));
}

两次打印的输出都是零,但当然它应该是一个正数。

我正在使用,globalRegistry但我不认为它应该有所作为。

4

1 回答 1

2

您看到结果的原因是您尚未注册具体的 Registry 实现。Micrometer 的默认设置没有定义支持注册表实现。因此,您的 Timer 值只是被丢弃在地板上而不是保留。

将此行添加为 main() 的第一行,您将开始获得您期望的行为:

Metrics.addRegistry(new SimpleMeterRegistry());

像这样:

public static void main(String ...args) {

    Metrics.addRegistry(new SimpleMeterRegistry());

    Timer timer = Metrics.timer("item.processing");
    for (int i = 0; i < 100; i++) {
        timer.record(i, TimeUnit.SECONDS);
    }

    System.out.println(timer.count());
    System.out.println(timer.mean(TimeUnit.SECONDS));
}

这给出了结果:

100
49.5
于 2019-03-17T14:31:31.713 回答