io.datakernel.datastream.stats.StreamStatsBasic Maven / Gradle / Ivy
package io.datakernel.datastream.stats;
import io.datakernel.datastream.StreamDataAcceptor;
import io.datakernel.eventloop.jmx.EventStats;
import io.datakernel.eventloop.jmx.ExceptionStats;
import io.datakernel.jmx.api.JmxAttribute;
import io.datakernel.jmx.api.JmxReducers.JmxReducerSum;
import java.time.Duration;
public class StreamStatsBasic implements StreamStats {
public static final Duration DEFAULT_BASIC_SMOOTHING_WINDOW = Duration.ofMinutes(5);
private final EventStats started = EventStats.create(DEFAULT_BASIC_SMOOTHING_WINDOW);
private final EventStats produce = EventStats.create(DEFAULT_BASIC_SMOOTHING_WINDOW);
private final EventStats suspend = EventStats.create(DEFAULT_BASIC_SMOOTHING_WINDOW);
private final EventStats endOfStream = EventStats.create(DEFAULT_BASIC_SMOOTHING_WINDOW);
private final ExceptionStats error = ExceptionStats.create();
public StreamStatsBasic withBasicSmoothingWindow(Duration smoothingWindow) {
started.setSmoothingWindow(smoothingWindow);
produce.setSmoothingWindow(smoothingWindow);
suspend.setSmoothingWindow(smoothingWindow);
endOfStream.setSmoothingWindow(smoothingWindow);
return this;
}
@Override
public StreamDataAcceptor createDataAcceptor(StreamDataAcceptor actualDataAcceptor) {
return actualDataAcceptor;
}
@Override
public void onStarted() {
started.recordEvent();
}
@Override
public void onProduce() {
produce.recordEvent();
}
@Override
public void onSuspend() {
suspend.recordEvent();
}
@Override
public void onEndOfStream() {
endOfStream.recordEvent();
}
@Override
public void onError(Throwable e) {
error.recordException(e);
}
@JmxAttribute
public EventStats getStarted() {
return started;
}
@JmxAttribute
public EventStats getProduce() {
return produce;
}
@JmxAttribute
public EventStats getSuspend() {
return suspend;
}
@JmxAttribute
public EventStats getEndOfStream() {
return endOfStream;
}
@JmxAttribute
public ExceptionStats getError() {
return error;
}
@JmxAttribute(reducer = JmxReducerSum.class)
public int getActive() {
return (int) (started.getTotalCount() - (endOfStream.getTotalCount() + error.getTotal()));
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy