use of net.greghaines.jesque.Job in project box-c by UNC-Libraries.
the class DepositSupervisorTest method setup.
@Before
public void setup() throws Exception {
when(jobFactory.materializeJob(any())).thenAnswer(new Answer<Object>() {
@Override
public Object answer(InvocationOnMock invocation) throws Throwable {
Job job = invocation.getArgumentAt(0, Job.class);
if (job == null) {
return null;
}
String uuid = (String) job.getArgs()[0];
String depositUUID = (String) job.getArgs()[1];
return new TestDepositJob(uuid, depositUUID);
}
});
depositDestination = pidMinter.mintContentPid();
agent = new AgentPrincipalsImpl("user", new AccessGroupSetImpl());
pipelineStatusFactory.setPipelineState(DepositPipelineState.active);
supervisor = new DepositSupervisor();
supervisor.setJesqueConfig(jesqueConfig);
supervisor.setDepositStatusFactory(depositStatusFactory);
supervisor.setJobStatusFactory(jobStatusFactory);
setField(supervisor, "pipelineStatusFactory", pipelineStatusFactory);
setField(supervisor, "depositWorkerPools", depositWorkerPools);
setField(supervisor, "queueDAO", queueDAO);
supervisor.setUnavailableDelaySeconds(60);
supervisor.setCleanupDelaySeconds(60);
// Turn up monitoring speed so tests are shorter
supervisor.setActionMonitorDelay(25l);
actionMonitor = supervisor.actionMonitoringTask;
}
use of net.greghaines.jesque.Job in project box-c by UNC-Libraries.
the class DepositSupervisor method queueNewDeposit.
private void queueNewDeposit(String uuid, Map<String, String> fields) {
LOG.info("Queuing first job for deposit {}", uuid);
Job job = makeJob(PackageIntegrityCheckJob.class, uuid);
depositStatusFactory.setState(uuid, DepositState.queued);
depositStatusFactory.clearActionRequest(uuid);
enqueueJob(job, fields, 0);
}
use of net.greghaines.jesque.Job in project box-c by UNC-Libraries.
the class DepositSupervisor method queueNextJob.
private void queueNextJob(Job job, String depositUUID, Map<String, String> status, List<String> successfulJobs, long delay) throws DepositFailedException {
Job nextJob = getNextJob(depositUUID, status, successfulJobs);
if (nextJob != null) {
LOG.info("Queuing next job {} for deposit {}", nextJob.getClassName(), depositUUID);
enqueueJob(nextJob, status, delay);
} else {
depositStatusFactory.setState(depositUUID, DepositState.finished);
final Counter finished = CounterFactory.createCounter(job.getClass(), "finished-deposits");
finished.inc();
depositDuration(depositUUID, status);
depositEmailHandler.sendDepositResults(depositUUID);
// Send message indicating the deposit has completed
sendDepositCompleteEvent(depositUUID);
// schedule cleanup job after the configured delay
Job cleanJob = makeJob(CleanupDepositJob.class, depositUUID);
LOG.info("Queuing {} for deposit {}", cleanJob.getClassName(), depositUUID);
enqueueJob(cleanJob, status, 1000 * this.getCleanupDelaySeconds());
}
}
use of net.greghaines.jesque.Job in project box-c by UNC-Libraries.
the class DepositSupervisor method addQueuedDeposits.
private void addQueuedDeposits(String queueName, Map<String, Set<String>> depositMap) {
QueueInfo info = queueDAO.getQueueInfo(queueName, 0, 0);
for (Job job : info.getJobs()) {
String depositId = (String) job.getArgs()[1];
Set<String> jobs = depositMap.get(depositId);
if (jobs == null) {
jobs = new HashSet<>();
depositMap.put(depositId, jobs);
}
jobs.add(job.getClassName());
}
}
use of net.greghaines.jesque.Job in project castled by castledio.
the class JesqueTasksClient method batchEnqueueTasks.
public void batchEnqueueTasks(List<JesqueTaskParams> jesqueTaskParamsList) {
Map<TaskPriority, List<JesqueTaskParams>> paramsPerPriority = jesqueTaskParamsList.stream().collect(Collectors.groupingBy(JesqueTaskParams::getTaskPriority));
for (TaskPriority priority : paramsPerPriority.keySet()) {
List<Job> jobs = paramsPerPriority.get(priority).stream().map(this::buildJesqueJob).collect(Collectors.toList());
this.client.delayedBatchEnqueue(priority.name(), jobs, System.currentTimeMillis() + PUBLISH_DELAY_MS);
}
}
Aggregations