@Version(value="3.0")

# Package org.eclipse.microprofile.metrics.annotation

This package contains the annotations used for MicroProfile Metrics.

See: Description

Annotation Types Summary
ConcurrentGauge: An annotation for marking a method, constructor, or class as concurrent gauged.
Counted: An annotation for marking a method, constructor, or class as counted.
Gauge: An annotation for marking a method or field as a gauge.
Metered: An annotation for marking a method, constructor, or class as metered.
Metric: An annotation requesting that a metric be injected or registered.
RegistryType: Qualifies the type of Metric Registry to inject.
SimplyTimed: An annotation for marking a method, constructor, or class as simply timed.
Timed: An annotation for marking a method, constructor, or class as timed.

## Package org.eclipse.microprofile.metrics.annotation Description

This package contains the annotations used for MicroProfile Metrics.

## Metric Annotation

The `Metric` annotation is used to provide metadata for the metric being injected. If a metric with the same name exists in the `MetricRegistry`, the metric is returned. Otherwise, a new metric is registered into the MetricRegistry along with the metadata provided by the @Metric annotation.

For example,

          @Inject
          @Metric(name="histogram", description="The description")
         public Histogram histogram;

## Interceptor Bindings

MicroProfile Metrics provides interceptor bindings which can be used to instrument an application: @Counted, @Gauge, @Metered, @Timed, @SimplyTimed and @ConcurrentGauge.

An example using @Counted,

          @Counted (name="visitorCount",
             description="The number of visitors to the application")
         public void visit () {
             ...
         }

An example using @Gauge,

          @Gauge(name = "queueSize")
         public int getQueueSize() {
             return queue.size;
         }

## CDI Qualifier

The `RegistryType` is used to identify which `MetricRegistry` (Application, Base, or Vendor) should be injected. By default, no `RegistryType` will inject the application `MetricRegistry`.

           @Inject
           @RegistryType(type=MetricRegistry.Type.BASE)
          MetricRegistry baseRegistry;