pl.allegro.tech.hermes.api.TopicMetrics Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of hermes-api Show documentation
Show all versions of hermes-api Show documentation
Fast and reliable message broker built on top of Kafka.
package pl.allegro.tech.hermes.api;
import java.util.Objects;
import static pl.allegro.tech.hermes.api.MetricDecimalValue.of;
public class TopicMetrics {
private long published;
private long volume;
private MetricDecimalValue rate = of("0.0");
private MetricDecimalValue deliveryRate = of("0.0");
private int subscriptions;
private MetricDecimalValue throughput = of("0.0");
public long getPublished() {
return published;
}
public long getVolume() {
return volume;
}
public MetricDecimalValue getRate() {
return rate;
}
public MetricDecimalValue getDeliveryRate() {
return deliveryRate;
}
public int getSubscriptions() {
return subscriptions;
}
public MetricDecimalValue getThroughput() {
return throughput;
}
@Override
public int hashCode() {
return Objects.hash(published, rate, deliveryRate, subscriptions, throughput, volume);
}
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null || getClass() != obj.getClass()) {
return false;
}
final TopicMetrics other = (TopicMetrics) obj;
return Objects.equals(this.published, other.published)
&& Objects.equals(this.rate, other.rate)
&& Objects.equals(this.deliveryRate, other.deliveryRate)
&& Objects.equals(this.subscriptions, other.subscriptions)
&& Objects.equals(this.throughput, other.throughput)
&& Objects.equals(this.volume, other.volume);
}
public static TopicMetrics unavailable() {
return Builder.topicMetrics().withRate(MetricDecimalValue.unavailable())
.withDeliveryRate(MetricDecimalValue.unavailable())
.withPublished(0)
.withVolume(0)
.withSubscriptions(0)
.withThroughput(MetricDecimalValue.unavailable())
.build();
}
public static class Builder {
private final TopicMetrics topicMetrics;
public Builder() {
topicMetrics = new TopicMetrics();
}
public Builder withPublished(long published) {
topicMetrics.published = published;
return this;
}
public Builder withRate(MetricDecimalValue rate) {
topicMetrics.rate = rate;
return this;
}
public Builder withDeliveryRate(MetricDecimalValue deliveryRate) {
topicMetrics.deliveryRate = deliveryRate;
return this;
}
public Builder withSubscriptions(int subscriptions) {
topicMetrics.subscriptions = subscriptions;
return this;
}
public Builder withThroughput(MetricDecimalValue throughput) {
topicMetrics.throughput = throughput;
return this;
}
public static Builder topicMetrics() {
return new Builder();
}
public TopicMetrics build() {
return topicMetrics;
}
public Builder withVolume(long volume) {
topicMetrics.volume = volume;
return this;
}
}
}