package io.trygvis.queue; import java.sql.SQLException; import java.util.Date; import java.util.List; public interface QueueService { QueueExecutor getQueue(String name, int interval, boolean autoCreate) throws SQLException; void schedule(Queue queue, Date scheduled, List arguments) throws SQLException; public static class TaskExecutionRequest { public final long chunkSize; public final boolean stopOnError; public final Long interval; public final boolean continueOnFullChunk; // TODO: saveExceptions public TaskExecutionRequest(long chunkSize, boolean stopOnError) { this(chunkSize, stopOnError, null, true); } private TaskExecutionRequest(long chunkSize, boolean stopOnError, Long interval, boolean continueOnFullChunk) { this.chunkSize = chunkSize; this.stopOnError = stopOnError; this.interval = interval; this.continueOnFullChunk = continueOnFullChunk; } public TaskExecutionRequest interval(long interval) { return new TaskExecutionRequest(chunkSize, stopOnError, interval, continueOnFullChunk); } public TaskExecutionRequest continueOnFullChunk(boolean continueOnFullChunk) { return new TaskExecutionRequest(chunkSize, stopOnError, interval, continueOnFullChunk); } @Override public String toString() { return "TaskExecutionRequest{" + "chunkSize=" + chunkSize + ", stopOnError=" + stopOnError + '}'; } public long interval(Queue queue) { if (interval != null) { return interval; } return queue.interval; } } }