Codahale Metrics: использование аннотации @Timed metrics в простой Java
Я пытаюсь добавить метрики в простое Java-приложение, используя метрики codahale. Я хотел бы использовать аннотацию @Timed, но мне неясно, какую MetricRegistry он использует или как сказать, какую MetricRegistry использовать. Приложение представляет собой простое приложение Java 8, построенное с Maven 3, без Spring, без Hibernate.
Я не могу найти документацию о том, как реализовать @Timed в документации dropwizard:https://dropwizard.github.io/metrics/3.1.0/manual/
Я добавил эти зависимости:
<dependency>
<groupId>io.dropwizard.metrics</grou,pId>
<artifactId>metrics-core</artifactId>
<version>3.1.0</version>
</dependency>
<dependency>
<groupId>com.codahale.metrics</groupId>
<artifactId>metrics-annotation</artifactId>
<version>3.0.2</version>
</dependency>
Когда я использую программный вызов Timer, я могу получать отчеты, потому что я знаю, какая MetricsRegistry используется:
static final MetricRegistry metrics = new MetricRegistry();
private void update() throws SQLException {
Timer.Context time = metrics.timer("domainobject.update").time();
try {
[...]
} finally {
time.stop();
}
}
Но когда я использую более элегантную аннотацию @Timed, я понятия не имею, какой реестр используется, и поэтому я не могу создать репортер, что означает, что я не могу получить отчет о показателях (я даже не уверен, действительно ли это так что-нибудь):
@Timed(name = "domainobject.update")
private void update() throws SQLException {
[...]
}
Посоветуйте, пожалуйста, как заставить аннотации @Timed и другие метрики работать в обычном Java-приложении.
Дополнительная информация: Причина, по которой я нахожу это странным, заключается в том, что я добавил фреймворк Lombok, и аннотации @ Slf4j работают. Я добавил Lombok в качестве зависимости в maven pom.xml:
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.14.8</version>
</dependency>
И я могу использовать аннотацию класса @ Sl4fj, чтобы добавить регистратор в класс, не загромождая переменные-члены:
@Slf4j
public class App {
public void logsome(){
log.info("Hello there");
}
}
Поэтому, если это возможно, просто добавив зависимость, я считаю, что мне просто не хватает зависимости или конфигурации для получения аннотации codahale @Timed, как описано выше.
(кстати, зацени Ломбок, это облегчит твою жизнь:http://projectlombok.org/ )