![[17.0.0.3 and later]](../ng_v17003plus.gif)
Migration depuis Dropwizard metrics
L'API MicroProfile metrics est similaire à Dropwizard metrics 3.2.3. Dans la plupart des cas, le code qui est instrumenté avec Dropwizard metrics peut s'exécuter avec MicroProfile metrics avec quelques petites variations.
Principales différences dans MicroProfile Metrics
- Seul un sous-ensemble de classes de base de metrics-core et metrics-annotation est disponible.
- Les classes sont packagées sous org.eclipse.microprofile.metrics et org.eclipse.microprofile.metrics.annotation.
- Counter, Histogram, Timer, Meter et MetricRegistry sont des interfaces.
- CDI peut être utilisé pour obtenir les instances metric et MetricRegistry.
- Une seule application partagée MetricRegistry.
- Les métadonnées peuvent être fournies et enregistrées avec la métrique.
- Les horloges et réservoirs personnalisés ne peuvent pas être fournis.
Noms de packages
Un sous-ensemble de classes des packages Dropwizard metrics-core et metrics-annotation est disponible dans le package MicroProfile metrics org.eclipse.microprofile.metrics. L'exemple
suivant illustre comment vous pouvez mettre à jour le nom de package de vos classes Dropwizard metrics pour travailler avec MicroProfile metrics.
- com.codahale.metrics devient org.eclipse.microprofile.metrics
- com.codahale.metrics.annotation devient org.eclipse.microprofile.metrics.annotation
Obtention de MetricRegistry
MetricRegistry est une interface. Au lieu de créer une instance du registre, vous pouvez injecter l'application MetricRegistry à l'aide d'une CDI.
Au lieu d'utiliser
// Dropwizard snippet
MetricRegistry metrics = new MetricRegistry();
// or
MetricRegistry sharedMetrics = SharedMetricRegistries.getOrCreate(...);
vous pouvez utiliser @Inject
MetricRegistry metrics;
Interfaces Counter, Histogram, Timer, Meter
Counter, Histogram, Timer et Meter sont des interfaces. Elles ne peuvent pas être directement instanciées et doivent être créées à l'aide du registre ou via une CDI. Par exemple :
Counter jobCount = metrics.counter("jobs");
//Example using annotation
@Inject
@Metric(name="jobs", absolute=true)
Counter jobCount;