![JAR search and dependency download from the Maven repository](/logo.png)
com.qmetric.feed.consumer.FeedConsumerScheduler Maven / Gradle / Ivy
package com.qmetric.feed.consumer;
import com.qmetric.feed.consumer.store.AlreadyConsumingException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.concurrent.ScheduledExecutorService;
import static java.util.concurrent.Executors.newSingleThreadScheduledExecutor;
public class FeedConsumerScheduler
{
private static final Logger LOG = LoggerFactory.getLogger(FeedConsumerScheduler.class);
private final FeedConsumer consumer;
private final Interval interval;
private final ScheduledExecutorService scheduledExecutorService;
public FeedConsumerScheduler(final FeedConsumer consumer, final Interval interval)
{
this(consumer, interval, newSingleThreadScheduledExecutor());
}
FeedConsumerScheduler(final FeedConsumer consumer, final Interval interval, final ScheduledExecutorService scheduledExecutorService)
{
this.consumer = consumer;
this.interval = interval;
this.scheduledExecutorService = scheduledExecutorService;
}
public void start()
{
scheduledExecutorService.scheduleAtFixedRate(new Runnable()
{
@Override
public void run()
{
consume();
}
}, 0, interval.time, interval.unit);
}
private void consume()
{
try
{
LOG.info("Attempting to consume feed");
consumer.consume();
LOG.info("Feed consumed successfully");
}
catch (final AlreadyConsumingException e)
{
LOG.info("Entry in feed already being consumed by another consumer...skipping");
}
catch (final Exception e)
{
LOG.error("Failed to consume feed", e);
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy