![[17.0.0.3 and later]](../ng_v17003plus.gif)
Dropwizard 指标迁移
“MicroProfile 指标”API 类似于 Dropwizard Metrics 3.2.3。在大多数情况下,使用 Dropwizard 指标检测的代码只需进行少量更改即可与 MicroProfile 指标一起运行。
MicroProfile Metrics 中的关键差异
- 只有来自 metrics-core 和 metrics-annotation 的核心类子集可用。
- 类打包在 org.eclipse.microprofile.metrics 和 org.eclipse.microprofile.metrics.annotation 下。
- Counter、Histogram、Timer、Meter 和 MetricRegistry 是接口。
- CDI 可用于获取 MetricRegistry 和指标实例。
- 单个共享应用程序 MetricRegistry。
- 可以随指标一起提供和注册元数据。
- 无法提供定制时钟和池。
包名称
可以在 MicroProfile 指标包 org.eclipse.microprofile.metrics 中找到来自
Dropwizard metrics-core 和 metrics-annotation 包的类子集。以下示例说明可以如何更新 Dropwizard 指标类的包名称以便与 MicroProfile 指标配合工作。
- com.codahale.metrics 变为 org.eclipse.microprofile.metrics
- com.codahale.metrics.annotation 变为 org.eclipse.microprofile.metrics.annotation
获取 MetricRegistry
MetricRegistry 是一个接口。您可以使用 CDI 来注入应用程序 MetricRegistry,而不是创建注册表实例。
请不要使用
// Dropwizard snippet
MetricRegistry metrics = new MetricRegistry();
// 或
MetricRegistry sharedMetrics = SharedMetricRegistries.getOrCreate(...);
而是可以使用:@Inject
MetricRegistry metrics;
Counter、Histogram、Timer 和 Meter 接口
Counter、Histogram、Timer 和 Meter 是接口。它们不能直接实例化,而是必须使用注册表或 CDI 来创建。例如:
Counter jobCount = metrics.counter("jobs");
//Example using annotation
@Inject
@Metric(name="jobs", absolute=true)
Counter jobCount;