All Downloads are FREE. Search and download functionalities are using the official Maven repository.

ru.taskurotta.service.metrics.handler.QueueSizeMetricHandler Maven / Gradle / Ivy

package ru.taskurotta.service.metrics.handler;

import ru.taskurotta.service.console.retriever.QueueInfoRetriever;
import ru.taskurotta.service.metrics.MetricName;
import ru.taskurotta.service.metrics.MetricsFactory;
import ru.taskurotta.service.metrics.PeriodicMetric;
import ru.taskurotta.service.metrics.PeriodicMetric.DatasetValueExtractor;

import java.util.List;
import java.util.Map;

/**
 * Helper class triggering periodic metric for queues size info
 * Date: 26.12.13 12:31
 */
public class QueueSizeMetricHandler {

    public QueueSizeMetricHandler(MetricsFactory metricsFactory, final QueueInfoRetriever retriever, int queueSizeMetricPeriodSeconds) {

        PeriodicMetric queueSizeMetric = metricsFactory.getPeriodicInstance(MetricName.QUEUE_SIZE.getValue(), queueSizeMetricPeriodSeconds);

        //start data collect
        queueSizeMetric.periodicMark(new DatasetValueExtractor() {

            @Override
            public List getDatasets() {//return list of queue names. Dataset name = queue name
                return retriever.getQueueNames();
            }

            @Override
            public Number getDatasetValue(String dataset) {//returns number of tasks in a queue
                return retriever.getQueueTaskCount(dataset);
            }

            @Override
            public Number getGeneralValue(Map datasetsValues) {//returns sum of queue sizes for this metric
                int result = 0;
                if (datasetsValues != null && !datasetsValues.isEmpty()) {
                    for (Number num: datasetsValues.values()) {
                        if (num != null) {
                            result += num.intValue();
                        }
                    }
                }
                return result;
            }
        });
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy