![[17.0.0.3 以及更新版本]](../ng_v17003plus.gif)
Dropwizard 度量移轉
MicroProfile 度量 API 類似於 Dropwizard 度量 3.2.3。在大部分情況下,使用 Dropwizard 度量來檢測的程式碼,可以與 MicroProfile 度量搭配執行,只是要進行少量的變更。
MicroProfile 度量中的重要差異
- metrics-core 和 metrics-annotation 中只有一部分的核心類別可以使用。
- 類別會包裝在 org.eclipse.microprofile.metrics 和 org.eclipse.microprofile.metrics.annotation 之下。
- 計數器、直方圖、計時器、計量和 MetricRegistry 是介面。
- 可以使用 CDI 來取得 MetricRegistry 和度量實例。
- 只有一個共用的應用程式 MetricRegistry。
- 可提供 meta 資料,並向度量登錄。
- 無法提供自訂時鐘和儲備池。
套件名稱
Dropwizard metrics-core 和 metrics-annotation 套件中的一部分類別,可在
MicroProfile 度量套件 org.eclipse.microprofile.metrics 中找到。下列範例說明如何更新
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();
// or
MetricRegistry sharedMetrics = SharedMetricRegistries.getOrCreate(...);
而改用
@Inject
MetricRegistry metrics;
「計數器」、「直方圖」、「計時器」、「計量」介面
「計數器」、「直方圖」、「計時器」和「計量」是介面。無法直接實例化,必須透過登錄或 CDI 來建立。例如:
Counter jobCount = metrics.counter("jobs");
//Example using annotation
@Inject
@Metric(name="jobs", absolute=true)
Counter jobCount;