...
These two approaches are shown below.
The APIs are supposed to be experimental.
package org.apache.ignite;
...
package org.apache.ignite.metric;
@IgniteExperimental
public interface IgniteMetrics extends Iterable<ReadOnlyMetricRegistry> {
...
package org.apache.ignite.metric;
@IgniteExperimental
public interface IgniteMetricRegistry extends ReadOnlyMetricRegistry {
IntMetric register(String name, IntSupplier supplier, @Nullable String desc);
LongMetric register(String name, LongSupplier supplier, @Nullable String desc);
DoubleMetric register(String name, DoubleSupplier supplier, @Nullable String desc);
<T> ObjectMetric<T> register(String name, Supplier<T> supplier, Class<T> type, @Nullable String desc);
BooleanMetric register(String name, BooleanSupplier supplier, @Nullable String desc);
...
package org.apache.ignite.metric;
@IgniteExperimental
public interface ObjectValueMetric<T> extends ObjectMetric<T> {
void value(T value);
}
@IgniteExperimental
public interface DoubleValueMetric extends DoubleMetric {
void add(double value);
void value(double value);
}
@IgniteExperimental
public interface LongSumMetric extends LongMetric {
void add(long value);
void increment();
void decrement();
}
@IgniteExperimental
public interface LongValueMetric extends LongSumMetric {
void value(long value);
}
...
package org.apache.ignite;@IgniteExperimental
public interface IgniteMetrics extends Iterable<ReadOnlyMetricRegistry> {
...