![[17.0.0.3 und höher]](../ng_v17003plus.gif)
Migration von Dropwizard Metrics
Die MicroProfile-Metrics-API ähnelt Dropwizard Metrics 3.2.3. In den meisten Fällen, kann mit Dropwizard Metrics instrumentierter Code mit MicroProfile Metrics mit geringfügigen Änderungen ausgeführt werden.
Wichtige Unterschiede in MicroProfile Metrics
- Es ist nur eine Untergruppe der Kernklassen aus metrics-core und metrics-annotation verfügbar.
- Klassen sind unter org.eclipse.microprofile.metrics und org.eclipse.microprofile.metrics.annotation gepackt.
- Counter, Histogram, Timer, Meter und MetricRegistry sind Schnittstellen.
- CDI kann verwendet werden, um die MetricRegistry und Metrikinstanzen abzurufen.
- Es gibt eine einzige gemeinsam genutzte MetricRegistry für Anwendungen.
- Metadaten können angegeben und mit der Metrik registriert werden.
- Angepasste Systemzeiten und Reservoirs können nicht angegeben werden.
Paketnamen
Eine Untergruppe von Klassen aus den Dropwizardpaketen metrics-core und metrics-annotation finden Sie im MicroProfile-Metrics-Paket org.eclipse.microprofile.metrics. Das folgende Beispiel veranschaulicht, wie Sie den Paketnamen Ihrer Dropwizard-Metrics-Klassen aktualisieren können, um mit MicroProfile Metrics arbeiten zu können.
- com.codahale.metrics wird zu org.eclipse.microprofile.metrics
- com.codahale.metrics.annotation wird zu org.eclipse.microprofile.metrics.annotation
MetricRegistry abrufen
Die MetricRegistry ist eine Schnittstelle. Anstatt eine Instanz der Registry zu erstellen, können Sie die Anwendungs-MetricRegistry mithilfe von CDI einfügen.
Sie können anstelle
// eines Dropwizard-Snippets
MetricRegistry metrics = new MetricRegistry();
// oder
MetricRegistry sharedMetrics = SharedMetricRegistries.getOrCreate(...);
Folgendes verwenden: @Inject
MetricRegistry metrics;
Schnittstellen: Counter, Histogram, Timer, Meter
Counter, Histogram, Timer und Meter sind Schnittstellen. Sie können nicht direkt instanziiert werden und müssen mithilfe der Registry oder mithilfe von CDI erstellt werden. Beispiel:
Counter jobCount = metrics.counter("jobs");
// Beispiel für die Verwendung einer Annotation
@Inject
@Metric(name="jobs", absolute=true)
Counter jobCount;