...
IgniteMetrics metrics();
}
...
Instead of #4, we could create interfaces for the existing metrics implementations.
...
To the package "org.apache.ignite.metric" we add:
...
/**
* Adds a long value custom metric.
*
* @return New or previously registered long value metric. {@code Null} if previous metric is not a {@link LongConsumer}.
*/
@Nullable LongConsumer longMetric(String registryName, String metricName, @Nullable String description);
/**
* Adds a double value custom metric.
*
* @return New or previously registered long value metric. {@code Null} if previous metric is not a {@link DoubleConsumer}.
*/
@Nullable DoubleConsumer doubleMetric(String registryName, String metricName, @Nullable String description);
/**
* Adds a int value custom metric.
*
* @return New or previously registered long value metric. {@code Null} if previous metric is not an {@link IntConsumer}.
*/
@Nullable IntConsumer booleanMetric(String registryName, String metricName, @Nullable String description);
/**
* Adds a long value custom metric.
*
* @return {@code True} if {@code supplier} has been registered as a new int metric. {@code False}, if a previous
* value supplier already exists.
*/
boolean longMetric(String registryName, String metricName, LongSupplier supplier, @Nullable String description);
/**
* Adds a double value custom metric.
*
* @return {@code True} if {@code supplier} has been registered as a new int metric. {@code False}, if a previous
* value supplier already exists.
*/
boolean doubleMetric(String registryName, String metricName, DoubleSupplier supplier, @Nullable String description);
/**
* Adds a int value custom metric.
*
* @return {@code True} if {@code supplier} has been registered as a new int metric. {@code False}, if a previous
* value supplier already exists.
*/
boolean intMetric(String registryName, String metricName, BooleanSupplier supplier, @Nullable String description);
/** Removes certain custom metric. */
void removeCustomMetric(String registryName, String metricName);
/** Removes entire custom metric registry. */
void removeCustomRegistry(String registryName);
/** Provides custom or internal read-only metric registry. */
@Nullable ReadOnlyMetricRegistry findRegistry(String registryName);
}
...
/** */
public static final class TestCustomMetricsService implements TestService {
/** */
@IgniteInstanceResource
private Ignite ignite;
/** */
@ServiceContextResource
private ServiceContext ctx;
/** */
private AtomicReference<UUID> remoteId;
/** */
private final AtomicInteger metricValue = new AtomicInteger();
/** {@inheritDoc} */
@Override public void init() throws Exception {
remoteId = new AtomicReference<>();
...