package com.mozilla.grouperfish.batch.scheduling; import java.util.concurrent.BlockingQueue; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.google.inject.Inject; import com.mozilla.grouperfish.batch.transforms.TransformProvider; import com.mozilla.grouperfish.model.Task; import com.mozilla.grouperfish.services.api.FileSystem; import com.mozilla.grouperfish.services.api.Grid; import com.mozilla.grouperfish.services.api.IndexProvider; /** * Run everything using one queue and a single worker. * Mostly useful to test the worker. */ public class SingleQueueBatchService extends AbstractBatchService { private static final Logger log = LoggerFactory.getLogger(SingleQueueBatchService.class); private final Worker worker; private final BlockingQueue<Task> inQueue; private final BlockingQueue<Task> failQueue; @Override public void schedule(Task task) { inQueue.add(task); } @Inject public SingleQueueBatchService( final Grid grid, final IndexProvider indexes, final FileSystem fs, final TransformProvider transforms) { super(indexes); inQueue = grid.queue("grouperfish_in"); failQueue = grid.queue("grouperfish_fail"); worker = new Worker(failQueue, inQueue, null, Helpers.sequentialHandler(grid, fs, indexes, transforms)); log.info("Instantiated service: {}", getClass().getSimpleName()); } public void start() { worker.start(); } public void stop() { worker.cancel(); } }