package de.otto.edison.example.jobs; import de.otto.edison.jobs.definition.JobDefinition; import de.otto.edison.jobs.domain.MetaJobRunnable; import de.otto.edison.jobs.eventbus.JobEventPublisher; import de.otto.edison.jobs.repository.JobMetaRepository; import de.otto.edison.jobs.service.JobMetaService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import java.util.Optional; import static de.otto.edison.jobs.definition.DefaultJobDefinition.manuallyTriggerableJobDefinition; @Component public class ExampleMetaJob extends MetaJobRunnable { public static final String JOB_TYPE = "ExampleMetaJob"; @Autowired public ExampleMetaJob(final JobMetaRepository metaRepository) { super(JOB_TYPE, metaRepository); } @Override public JobDefinition getJobDefinition() { return manuallyTriggerableJobDefinition( JOB_TYPE, "Some stateful Job", "A Job that stores some meta data", 0, Optional.empty()); } @Override public void execute(JobEventPublisher jobEventPublisher) { int lastEntry = getMetaAsInt("lastEntry", 0); for (int i = lastEntry+1; i <= lastEntry + 10; i++) { jobEventPublisher.info("Processing Item " + i); setMeta("lastEntry", i); } } }