class ReducedPropagationManager {

    public void startExpiredQueueProcessing(long intervalMs) {
        log.info("About to start periodic processing of expired queues with an interval of " + intervalMs + " ms");
        vertx.cancelTimer(processExpiredQueuesTimerId);
        processExpiredQueuesTimerId = vertx.setPeriodic(intervalMs, event -> {
            final String token = createToken("reducedpropagation_expired_queue_processing");
            acquireLock(this.lock, PROCESS_EXPIRED_QUEUES_LOCK, token, getLockExpiry(intervalMs), log).setHandler(lockEvent -> {
                if(lockEvent.succeeded()){
                    if(lockEvent.result()){
                        processExpiredQueues(token);
                    }
                } else {
                    log.error("Could not acquire lock '"+PROCESS_EXPIRED_QUEUES_LOCK+"'. Message: " + lockEvent.cause().getMessage());
                }
            });
        });
    }

    public  ReducedPropagationManager(Vertx vertx, ReducedPropagationStorage storage, RequestQueue requestQueue, Lock lock);

}