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

com.github.sonus21.rqueue.config.MetricsProperties Maven / Gradle / Ivy

/*
 *  Copyright 2021 Sonu Kumar
 *
 *  Licensed under the Apache License, Version 2.0 (the "License");
 *  you may not use this file except in compliance with the License.
 *  You may obtain a copy of the License at
 *
 *         https://www.apache.org/licenses/LICENSE-2.0
 *
 *   Unless required by applicable law or agreed to in writing, software
 *   distributed under the License is distributed on an "AS IS" BASIS,
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  See the License for the specific language governing permissions and limitations under the License.
 *
 */

package com.github.sonus21.rqueue.config;

import io.micrometer.core.instrument.Tag;
import io.micrometer.core.instrument.Tags;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Map.Entry;
import lombok.Getter;
import lombok.Setter;

/**
 * RqueueMetrics provides all possible configurations available in Rqueue library for metrics.
 *
 * 

Rqueue can be configured to count the failure execution, total execution, and can have set of * tags. */ @Getter @Setter public abstract class MetricsProperties { /** List of tags to be used while publishing metrics. */ private Map tags = new LinkedHashMap<>(); /** what type of counting feature is enabled, by default counting feature is disabled. */ private Count count = new Count(); private Tags metricTags = Tags.empty(); /** * Get Tags object that can be used in metric. Tags can be either configured manually or using * properties or XML file. * * @return Tags object */ public Tags getMetricTags() { Tag tag = metricTags.stream().findFirst().orElse(null); if (tag == null && !tags.isEmpty()) { for (Entry entry : tags.entrySet()) { metricTags = metricTags.and(entry.getKey(), entry.getValue()); } } return metricTags; } public void setMetricTags(Tags tags) { metricTags = tags; } public boolean countExecution() { return count.isExecution(); } public boolean countFailure() { return count.isFailure(); } @Getter @Setter public static class Count { /** * Count all execution success and failure * *

each method invocation is counted once, which means if a message is retried N times then * it will be counted as N */ private boolean execution = false; /** * count failure execution, count increases whenever invocation failure, or it fails due to * deserialization etc. Any types of failure would be counted. */ private boolean failure = false; } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy