【问题标题】:Why does MicroMeter Timer returns zero?为什么 MicroMeter Timer 返回零?
【发布时间】:2019-03-17 13:53:55
【问题描述】:

考虑以下代码:

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,但我认为这不会有什么不同。

【问题讨论】:

    标签: java micrometer spring-micrometer


    【解决方案1】:

    您看到结果的原因是您尚未注册具体的 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
    

    【讨论】:

      猜你喜欢
      • 2014-04-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-08
      • 1970-01-01
      相关资源
      最近更新 更多