
pl.allegro.tech.hermes.management.infrastructure.metrics.MonitoringMetricsContainer Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of hermes-management Show documentation
Show all versions of hermes-management Show documentation
Fast and reliable message broker built on top of Kafka.
package pl.allegro.tech.hermes.management.infrastructure.metrics;
import java.util.HashMap;
import java.util.Map;
import pl.allegro.tech.hermes.api.MetricDecimalValue;
public class MonitoringMetricsContainer {
private static final MetricDecimalValue DEFAULT_VALUE = MetricDecimalValue.of("0.0");
private final Map metrics;
private final boolean isAvailable;
private MonitoringMetricsContainer(boolean isAvailable, Map metrics) {
this.metrics = metrics;
this.isAvailable = isAvailable;
}
public static MonitoringMetricsContainer createEmpty() {
return new MonitoringMetricsContainer(true, new HashMap<>());
}
public static MonitoringMetricsContainer initialized(Map metrics) {
return new MonitoringMetricsContainer(true, metrics);
}
public static MonitoringMetricsContainer unavailable() {
return new MonitoringMetricsContainer(false, new HashMap<>());
}
public MonitoringMetricsContainer addMetricValue(String query, MetricDecimalValue value) {
if (!isAvailable) {
throw new IllegalStateException("Adding value to unavailable metrics container");
}
this.metrics.put(query, value);
return this;
}
public MetricDecimalValue metricValue(String query) {
if (!isAvailable) {
return MetricDecimalValue.unavailable();
}
return metrics.getOrDefault(query, DEFAULT_VALUE);
}
public boolean hasUnavailableMetrics() {
return !isAvailable || metrics.entrySet().stream().anyMatch(e -> !e.getValue().isAvailable());
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy