Şu satırı dahil ederiz
import com.hazelcast.internal.metrics.impl.MetricsService;
Açıklaması şöyle
Service collecting the Metrics periodically and publishes them via MetricsPublishers
Kodu şöyle
public class MetricsService implements ManagedService, LiveOperationsTracker { public static final String SERVICE_NAME = "hz:impl:metricsService"; ... private final CopyOnWriteArrayList<MetricsPublisher> publishers = new CopyOnWriteArrayList<>(); ... private volatile ScheduledFuture<?> scheduledFuture; ... }
scheduleMetricsCollectorIfNeeded metodu
scheduledFuture ile bir timer başlatır ve collectMetrics() metodunu tetikler. Timer'ın sıklığı MetricsConfig.getCollectionFrequencySeconds() ile belirlenir.
collectMetrics metodu
Kod şöyle
void collectMetrics() { MetricsPublisher[] publishersArr = publishers.toArray(new MetricsPublisher[0]); PublisherMetricsCollector publisherCollector = new PublisherMetricsCollector(publishersArr); collectMetrics(publisherCollector); publisherCollector.publishCollectedMetrics(); }
PublisherMetricsCollector hem collector hem de publisher. Kalıtım şöyle
MetricsCollector
PublisherMetricsCollector
MetricsCollector sınıfının collect metodları var. Bunlar şöyle
void collectLong(MetricDescriptor descriptor, long value);
void collectDouble(MetricDescriptor descriptor, double value);
void collectException(MetricDescriptor descriptor, Exception e);
void collectNoValue(MetricDescriptor descriptor);
collectMetrics metodu - MetricsCollector metricsCollector
Kod şöyle. Yani PublisherMetricsCollector nesnesi MetricsCollector olarak metricsRegistrySupplier nesnesine geçiliyor. Her collectX() metodu çağrılınca PublisherMetricsCollector nesnesi de içindeki publisher'ları tetikliyor.
void collectMetrics(MetricsCollector metricsCollector) {
metricsRegistrySupplier.get().collect(metricsCollector);
}
Hiç yorum yok:
Yorum Gönder