@Override public synchronized void run() { // TODO This should optionally use a CircuitBreaker if (started && configuration.get().enabled().get()) { Transforms.Counter counter = new Transforms.Counter(); try { long currentOffset = configuration.get().lastOffset().get(); source.events( currentOffset, Long.MAX_VALUE ).transferTo( Transforms.map( counter, output ) ); // Save new offset, to be used in next round configuration.get().lastOffset().set( currentOffset+counter.count() ); configuration.save(); } catch (Throwable throwable) { logger.warn( "Event handling failed", throwable ); } } }
@Override public T map( T t ) { counter.map( t ); if( counter.count % interval == 0 ) { logProgress(); } return t; }
public ProgressLog( Logger logger, String format, long interval ) { this.interval = interval; if( logger != null && format != null ) { log = new Log<>( logger, format ); } counter = new Counter<>(); }
public ProgressLog( long interval ) { this.interval = interval; counter = new Counter<>(); }