Я очень новичок в java и метриках. Может ли кто-нибудь помочь мне понять описанную ниже проблему и, возможно, также прояснить для меня ситуацию между метриками dropwizard и yammer (например, если я наберу yammer.metrics
в Google, вся документация указывает на 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 не поддерживает контекст, а только таймер dropwizard. Чтобы заставить приведенный выше код работать, мне нужно сделать следующее:
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"));
теперь у меня есть таймер, который поддерживает контекст.
Весь наш код импортирует com.yammer.metrics, и я хотел бы продолжать использовать его, если это возможно. Итак, как мне записать события, чтобы я мог получить, например, responses.oneMinuteRate()
с помощью yammer.Metrics
?