使用yammer指标计时器获得一分钟的费率

时间:2015-11-10 12:20:46

标签: java dropwizard metrics yammer

我对java和指标非常陌生。 有人可以帮助我理解下面的问题,也许还可以清除dropwizard和yammer指标之间的情况 (例如,如果我在谷歌中输入yammer.metrics所有文档指向dropwizard)?

我想使用yammer指标实现计时器,但是,我发现这些示例在网上令人困惑。

例如,使用yammer指标我可以执行以下操作:

import com.yammer.metrics.Metrics;
import com.yammer.metrics.core.Meter;
import com.yammer.metrics.core.Timer;

...

public static Timer responses = Metrics.defaultRegistry().newTimer(myClass.class, "timer-name");

然而,这样做我不知道如何使用计时器,因为我能找到的所有文件都给出了以下(dropwizard)示例:

final Timer.Context context = responses.time();
    try {
        // intense code;
        return "OK";
    } finally {
        context.stop();
    }

这不起作用,因为Yammer Timer不支持上下文只有Dropwizard Timer。为了使上述代码起作用,我需要执行以下操作;

import com.codahale.metrics.*;
import java.util.concurrent.TimeUnit;

private final static MetricRegistry metrics = new MetricRegistry();
private final static Timer responses = metrics.timer(name(myClass.class, "timer-name"));

现在我有一个支持Context的Timer。

我们所有的代码都会导入com.yammer.metrics,如果可能的话,我想继续使用它。那么如何使用responses.oneMinuteRate()记录我可以获得的事件,例如 yammer.Metrics

1 个答案:

答案 0 :(得分:2)

com.yammer.metrics是旧图书馆。

com.yammer.metrics:metrics-core:2.2.0 (up to 2012 year)

他们在2012年有重大举措:

com.codahale.metrics:metrics-core:3.0.* (2013-2014 year)

所有打包的都重命名为com.codahale.metrics

然后他们再次将文物移到:

io.dropwizard.metrics:metrics-core:3.1.*
现在不支持com.yammer.metrics,它不能向后兼容新版本