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

pl.allegro.tech.hermes.consumers.message.undelivered.UndeliveredMessageLogPersister Maven / Gradle / Ivy

package pl.allegro.tech.hermes.consumers.message.undelivered;

import com.google.common.util.concurrent.ThreadFactoryBuilder;
import pl.allegro.tech.hermes.common.message.undelivered.UndeliveredMessageLog;

import java.time.Duration;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;

import static java.util.concurrent.TimeUnit.MILLISECONDS;

public class UndeliveredMessageLogPersister {

    private final Duration period;
    private final UndeliveredMessageLog undeliveredMessageLog;
    private final ScheduledExecutorService scheduledExecutorService;

    public UndeliveredMessageLogPersister(UndeliveredMessageLog undeliveredMessageLog, Duration undeliveredMessageLogPersistPeriod) {
        this.undeliveredMessageLog = undeliveredMessageLog;
        this.period = undeliveredMessageLogPersistPeriod;
        this.scheduledExecutorService = Executors.newSingleThreadScheduledExecutor(
                new ThreadFactoryBuilder().setNameFormat("undelivered-message-log-persister-%d").build());
    }

    public void start() {
        scheduledExecutorService.scheduleAtFixedRate(undeliveredMessageLog::persist, period.toMillis(), period.toMillis(), MILLISECONDS);
    }

    public void shutdown() {
        scheduledExecutorService.shutdown();
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy