package de.otto.edison.example.jobs;
import de.otto.edison.jobs.definition.JobDefinition;
import de.otto.edison.jobs.eventbus.JobEventPublisher;
import de.otto.edison.jobs.service.JobRunnable;
import org.springframework.stereotype.Component;
import java.util.Optional;
import java.util.Random;
import static de.otto.edison.jobs.definition.DefaultJobDefinition.fixedDelayJobDefinition;
import static java.lang.Thread.sleep;
import static java.time.Duration.ofHours;
/**
* @author Guido Steinacker
* @since 15.02.15
*/
@Component
public class FooJob implements JobRunnable {
@Override
public JobDefinition getJobDefinition() {
return fixedDelayJobDefinition(
"Foo",
"Foo Job",
"An example job that is running for a while.",
ofHours(1),
0,
Optional.of(ofHours(3))
);
}
@Override
public void execute(final JobEventPublisher jobEventPublisher) {
for (int i = 0; i < 60; ++i) {
doSomeHardWork(jobEventPublisher);
}
}
private void doSomeHardWork(final JobEventPublisher jobEventPublisher) {
try {
jobEventPublisher.info("Still doing some hard work...");
sleep(new Random(42).nextInt(2000));
} catch (final InterruptedException e) {
jobEventPublisher.error(e.getMessage());
}
}
}