org.eclipse.microprofile.metrics.annotation

## Annotation Type ConcurrentGauge

    @Inherited
     @Documented
     @InterceptorBinding
     @Retention(value=RUNTIME)
     @Target(value={TYPE,CONSTRUCTOR,METHOD})
    public @interface ConcurrentGauge

An annotation for marking a method, constructor, or class as concurrent gauged. The metric will be registered in the application MetricRegistry. A concurrent gauge has the following semantics:

- Upon entering the marked item, the value is increased.
- Upon exiting the marked item, the value is decreased.

Given a method annotated with @ConcurrentGauge like this:

          @ConcurrentGauge(name = "fancyName")
         public String fancyName(String name) {
             return "Sir Captain " + name;
         }

A concurrent gauge with the fully qualified class name + `fancyName` will be created and each time the `#fancyName(String)` method is invoked, the gauge will be updated. Similarly, the same applies for a constructor annotated with @ConcurrentGauge.

Given a class annotated with @ConcurrentGauge like this:

          @ConcurrentGauge
         public class CGaugedBean {
             public void cGaugedMethod1() {}
             public void cGaugedMethod2() {}
         }

A counter for the defining class will be created for each of the constructors/methods. Each time the constructor/method is invoked, the respective gauge will be updated. This annotation will throw an IllegalStateException if the constructor/method is invoked, but the metric no longer exists in the MetricRegistry.

Since:
  2.0

### Optional Element Summary

Optional Elements
`boolean` `absolute` Denotes whether to use the absolute name or use the default given name relative to the annotated class.
`String` `description` The description of the concurrent gauge.
`String` `displayName` The display name of the concurrent gauge.
`String` `name` The name of the concurrent gauge.
`String[]` `tags` The tags of the concurrent gauge.
`String` `unit` The unit of the concurrent gauge.

### Element Detail

#### name

    public abstract String name

The name of the concurrent gauge.

Returns:
  The name of the concurrent gauge.

Default:
  ""

#### tags

    public abstract String[] tags

The tags of the concurrent gauge.

Returns:
  The tags of the concurrent gauge. Each `String` tag must be in the form of 'key=value'. If the input is empty or does not contain a '=' sign, the entry is ignored.
See Also:
  `Metadata`

Default:
  {}

#### absolute

    public abstract boolean absolute

Denotes whether to use the absolute name or use the default given name relative to the annotated class.

Returns:
  If `true`, use the given name as an absolute name. If `false` (default), use the given name relative to the annotated class. When annotating a class, this must be `false`.

Default:
  false

#### displayName

    public abstract String displayName

The display name of the concurrent gauge.

Returns:
  The display name of the concurrent gauge.
See Also:
  `Metadata`

Default:
  ""

#### description

    public abstract String description

The description of the concurrent gauge.

Returns:
  The description of the concurrent gauge.
See Also:
  `Metadata`

Default:
  ""

#### unit

    public abstract String unit

The unit of the concurrent gauge.

Returns:
  The unit of the concurrent gauge. By default, the value is `MetricUnits.NONE`.
See Also:
  `Metadata`, `MetricUnits`

Default:
  "none"