public static final class PolledMeter.Builder extends TagsBuilder<PolledMeter.Builder>
extraTags
Modifier and Type | Method and Description |
---|---|
<T extends Number> |
monitorMonotonicCounter(T number)
Poll the value of the provided
Number and update a counter with the delta
since the last time the value was sampled. |
<T> T |
monitorMonotonicCounter(T obj,
ToLongFunction<T> f)
Map a monotonically increasing long or int value to a counter.
|
<T> T |
monitorMonotonicCounterDouble(T obj,
ToDoubleFunction<T> f)
Map a monotonically increasing double value to a counter.
|
<T extends Collection<?>> |
monitorSize(T collection)
Poll the value of the provided
Collection . |
<T extends Map<?,?>> |
monitorSize(T map)
Poll the value of the provided
Map . |
void |
monitorStaticMethodMonotonicCounter(LongSupplier supplier)
Map a monotonically increasing long or int value to a counter.
|
void |
monitorStaticMethodValue(DoubleSupplier supplier)
Poll by executing
supplier.getAsDouble() and reporting the returned value. |
<T extends Number> |
monitorValue(T number)
Poll the value of the provided
Number . |
<T> T |
monitorValue(T obj,
ToDoubleFunction<T> f)
Poll by executing
f(obj) and reporting the returned value. |
PolledMeter.Builder |
scheduleOn(ScheduledExecutorService executor)
Set the executor to be used for polling the value.
|
PolledMeter.Builder |
withDelay(Duration delay)
Set the delay at which the value should be refreshed.
|
public PolledMeter.Builder scheduleOn(ScheduledExecutorService executor)
public PolledMeter.Builder withDelay(Duration delay)
RegistryConfig.gaugePollingFrequency()
public <T extends Number> T monitorValue(T number)
Number
. The implementation provided must
be thread safe. The most common usages of this are to monitor instances of
AtomicInteger
or AtomicLong
.number
- Thread-safe implementation of Number
used to access the value.public <T> T monitorValue(T obj, ToDoubleFunction<T> f)
f(obj)
and reporting the returned value. The provided
function must be thread safe and cheap to execute. Expensive operations, including
any IO or network calls, should not be performed inline unless using a custom
executor by calling scheduleOn(ScheduledExecutorService)
. Assume that the
function will be called frequently and may be called concurrently.
A weak reference will be kept to obj
so that monitoring the object will
not prevent garbage collection. The meter will go away when obj
is collected.
If obj
is null, then it will be treated as an already collected object and a
warning will be logged.
To explicitly disable polling call PolledMeter.remove(Registry, Id)
with the same id used
with this builder.
obj
- Object used to compute a value.f
- Function that is applied on the value for the number.public void monitorStaticMethodValue(DoubleSupplier supplier)
supplier.getAsDouble()
and reporting the returned value. The
provided function must be thread safe and cheap to execute. Expensive operations, including
any IO or network calls, should not be performed inline unless using a custom executor by
calling scheduleOn(ScheduledExecutorService)
. Assume that the function will be
called frequently and may be called concurrently.
This helper should only be used with static method references. It will keep a strong reference to any enclosed objects and they will never get garbage collected unless removed explicitly by the user.
To explicitly disable polling call PolledMeter.remove(Registry, Id)
with the same id used
with this builder.
supplier
- Supplier that will be called to access the value.public <T extends Number> T monitorMonotonicCounter(T number)
Number
and update a counter with the delta
since the last time the value was sampled. The implementation provided must
be thread safe. The most common usages of this are to monitor instances of
AtomicInteger
,
AtomicLong
, or
LongAdder
. For more information see
monitorMonotonicCounter(Object, ToLongFunction)
.number
- Thread-safe implementation of Number
used to access the value.public <T> T monitorMonotonicCounter(T obj, ToLongFunction<T> f)
Example monotonic counters provided by the JDK:
Example usage:
Registry registry = ... MonotonicCounter.using(registry) .withName("pool.completedTasks") .monitorMonotonicCounter(executor, ThreadPoolExecutor::getCompletedTaskCount);
The value is polled by executing f(obj)
and a counter will be updated with
the delta since the last time the value was sampled. The provided function must be
thread safe and cheap to execute. Expensive operations, including any IO or network
calls, should not be performed inline unless using a custom executor by calling
scheduleOn(ScheduledExecutorService)
. Assume that the function will be called
frequently and may be called concurrently.
A weak reference will be kept to obj
so that monitoring the object will
not prevent garbage collection. The meter will go away when obj
is collected.
If obj
is null, then it will be treated as an already collected object and a
warning will be logged.
To explicitly disable polling call PolledMeter.remove(Registry, Id)
with the same id used
with this builder.
obj
- Object used to compute a value.f
- Function that is applied on the value for the number.public <T> T monitorMonotonicCounterDouble(T obj, ToDoubleFunction<T> f)
The value is polled by executing f(obj)
and a counter will be updated with
the delta since the last time the value was sampled. The provided function must be
thread safe and cheap to execute. Expensive operations, including any IO or network
calls, should not be performed inline unless using a custom executor by calling
scheduleOn(ScheduledExecutorService)
. Assume that the function will be called
frequently and may be called concurrently.
A weak reference will be kept to obj
so that monitoring the object will
not prevent garbage collection. The meter will go away when obj
is collected.
If obj
is null, then it will be treated as an already collected object and a
warning will be logged.
To explicitly disable polling call PolledMeter.remove(Registry, Id)
with the same id used
with this builder.
obj
- Object used to compute a value.f
- Function that is applied on the value for the number.public void monitorStaticMethodMonotonicCounter(LongSupplier supplier)
Poll by executing supplier.getAsLong()
and reporting the returned value. The
provided function must be thread safe and cheap to execute. Expensive operations, including
any IO or network calls, should not be performed inline unless using a custom executor by
calling scheduleOn(ScheduledExecutorService)
. Assume that the function will be
called frequently and may be called concurrently.
This helper should only be used with static method references. It will keep a strong reference to any enclosed objects and they will never get garbage collected unless removed explicitly by the user.
To explicitly disable polling call PolledMeter.remove(Registry, Id)
with the same id used
with this builder.
supplier
- Supplier that will be called to access the value.public <T extends Collection<?>> T monitorSize(T collection)
Collection
. The implementation provided must
be thread safe. Keep in mind that computing the size can be an expensive operation
for some collection types.collection
- Thread-safe implementation of Collection
.public <T extends Map<?,?>> T monitorSize(T map)
Map
. The implementation provided must
be thread safe. Keep in mind that computing the size can be an expensive operation
for some map types.map
- Thread-safe implementation of Map
.